none
MVVM 画面遷移について RRS feed

  • 質問

  • WPFのMVVMパターン(インフラ:Livet使用)にてアプリを作成しています。

    常識的なことかもしれませんが、質問させていただきます。

    画面A、画面Bがあり、画面Aから画面Bを表示した後に背面にある画面Aを消したいのですが、

    その際はどのようにすればよろしいのでしょうか。

    よろしくお願い致します。

    2015年7月10日 2:26

回答

  • Behaviorで表示してる前提だと以下のような感じでいけます。

    <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
            xmlns:Custom="http://schemas.livet-mvvm.net/2011/wpf"
            x:Class="LivetNav.Views.LoginWindow"
            xmlns:Views="clr-namespace:LivetNav.Views"
            Title="LoginWindow"
            Height="300"
            Width="300">
        <Grid>
            <Button Content="Button"
                    HorizontalAlignment="Left"
                    Margin="10,10,0,0"
                    VerticalAlignment="Top"
                    Width="75">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Click">
                        <Custom:TransitionInteractionMessageAction IsOwned="False">
                            <Custom:DirectInteractionMessage>
                                <Custom:TransitionMessage WindowType="{x:Type Views:MenuWindow}" />
                            </Custom:DirectInteractionMessage>
                        </Custom:TransitionInteractionMessageAction>
                        <Custom:WindowInteractionMessageAction>
                            <Custom:DirectInteractionMessage>
                                <Custom:WindowActionMessage Action="Close" />                            
                            </Custom:DirectInteractionMessage>
                        </Custom:WindowInteractionMessageAction>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Button>
        </Grid>
    </Window>

    BehaviorのActionには複数Actionが設定可能なので、Window開くActionと閉じるActionを設定すればいけます。

    かずき Blog:http://d.hatena.ne.jp/okazuki/

    • 回答の候補に設定 星 睦美 2015年7月10日 4:44
    • 回答としてマーク 星 睦美 2015年7月22日 2:44
    2015年7月10日 3:46

すべての返信

  • Behaviorで表示してる前提だと以下のような感じでいけます。

    <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
            xmlns:Custom="http://schemas.livet-mvvm.net/2011/wpf"
            x:Class="LivetNav.Views.LoginWindow"
            xmlns:Views="clr-namespace:LivetNav.Views"
            Title="LoginWindow"
            Height="300"
            Width="300">
        <Grid>
            <Button Content="Button"
                    HorizontalAlignment="Left"
                    Margin="10,10,0,0"
                    VerticalAlignment="Top"
                    Width="75">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Click">
                        <Custom:TransitionInteractionMessageAction IsOwned="False">
                            <Custom:DirectInteractionMessage>
                                <Custom:TransitionMessage WindowType="{x:Type Views:MenuWindow}" />
                            </Custom:DirectInteractionMessage>
                        </Custom:TransitionInteractionMessageAction>
                        <Custom:WindowInteractionMessageAction>
                            <Custom:DirectInteractionMessage>
                                <Custom:WindowActionMessage Action="Close" />                            
                            </Custom:DirectInteractionMessage>
                        </Custom:WindowInteractionMessageAction>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Button>
        </Grid>
    </Window>

    BehaviorのActionには複数Actionが設定可能なので、Window開くActionと閉じるActionを設定すればいけます。

    かずき Blog:http://d.hatena.ne.jp/okazuki/

    • 回答の候補に設定 星 睦美 2015年7月10日 4:44
    • 回答としてマーク 星 睦美 2015年7月22日 2:44
    2015年7月10日 3:46
  • かずき様

    回答頂きありがとうございました。Blogなども最近よく拝見しております。

    今回の質問ですが、回答を参考にさせて頂き、無事に想定通りの動くようになりました。

    わかりやすい回答を頂き、とても感謝しております。

    本当にありがとうございました。

    2015年7月10日 4:26