xamlだけでウィンドウを閉じる処理を実装

以下のパッケージをインストールします。

www.nuget.org

ウィンドウを閉じる処理を実装したいWindowに対して以下のxamlコードのボタンを実装しましょう。

<Button Content="Close">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <i:CallMethodAction MethodName="Close"
                                TargetObject="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

仕組み的には、CallMethodActionのTargetObjectでxamlの文章構造?的に親階層になるものの中からWindows型のものを探しているのだと思います。 そのTargetObjectのMethodNameで指定したメソッド、つまりCloseメソッドを実行するという感じです。

System.Windows.Interactivityを利用すれば、いちいちViewModelに実装しなくて良い面倒な画面固有イベントも簡単に実装出来そうですね。