0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Livet 別画面を表示する方法

Posted at

#はじめに
WPF学習中のため自分用に記載していきます。
間違い、不足などありましたらコメントをよろしくお願いします。

#●別画面の表示方法
ViewModelからViewを開きたいときはMessengerを送ることで実現する。

Livet.Behaviors.Messaging 名前空間には Livet の Messenger などから送られたメッセージを受け取ることの出来る Action が用意されています。この Action は Messenger からメッセージを受け取るだけではなく、EventTrigger などから Action を起動することが出来るようになっています。

※引用元:(https://github.com/runceel/Livet)

#View側のソース
InteractionMessageTriggerを設定してActionを指定する。
TransitionInteractionMessageActionで別画面を起動する。
 Mode(画面の表示方法)
     Normal:別画面を表示中に他の画面の操作が可能
     Modal:別画面を表示中は他の画面の操作が不可能

<behaviors:Interaction.Triggers>
    <l:InteractionMessageTrigger MessageKey="OpenMessageKey" Messenger="{Binding Messenger}">
        <l:TransitionInteractionMessageAction WindowType="{x:Type v:SubWindow}" Mode="Normal"/>
    </l:InteractionMessageTrigger>
</behaviors:Interaction.Triggers>

<Grid>
    <StackPanel VerticalAlignment="Center" >
        <TextBox Text="{Binding Text}" />
        <Button Content="Open" Command="{Binding OpenCommand}" />
    </StackPanel>
</Grid>

#ViewModel側のソース
Messengerを使用してメッセージを送る。
ViewModel側で指定したメッセージキーが一致するInteractionMessageTriggerが実行される。

ViewModel.cs
private string text;
public string Text { get => text; set => RaisePropertyChangedIfSet(ref text, value); }

private ViewModelCommand openCommand;
public ViewModelCommand OpenCommand => openCommand ??= new ViewModelCommand(ShowDetailWindow);
private void ShowDetailWindow()
{
    Messenger.Raise(new TransitionMessage(new SubWindowViewModel(text), "OpenMessageKey"));
}

 


#・環境
VisualStudio2019
.Net Core3.0
Livet v3.2.1

#・参照
[GitHub Livet]
(https://github.com/runceel/Livet)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?