ビューモデルからビューを閉じるための依存関係プロパティを作成します。
依存関係プロパティ:
public static class WindowBehaviors
{
public static readonly DependencyProperty IsOpenProperty =
DependencyProperty.RegisterAttached("IsOpen"
, typeof(bool),
typeof(WindowBehaviors),
new UIPropertyMetadata(false, IsOpenChanged));
private static void IsOpenChanged(DependencyObject obj,DependencyPropertyChangedEventArgs args)
{
Window window = Window.GetWindow(obj);
if (window != null && ((bool)args.NewValue))
window.Close();
}
public static bool GetIsOpen(Window target)
{
return (bool)target.GetValue(IsOpenProperty);
}
public static void SetIsOpen(Window target, bool value)
{
target.SetValue(IsOpenProperty, value);
}
}
そして、このように私のxamlでそれを使用します:
<window
...
Command:WindowBehaviors.IsOpen="True">
それは問題なく動作しますが、viewModelのプロパティにバインドしたい場合は動作しません。また、後でxamlでリソースを定義するため、動作しません。
xamlで:
<Window.Resources>
<VVM:myVieModel x:Key="myVieModel"/>
</Window.Resources>
そして私は私が何をすべきかわからない、私はこれをどこに置くべきか:
Command:WindowBehaviors.IsOpen="{binding Isopen}"