Window 手动最小化覆盖我在 DataTrigger 中的 WindowState setter
Window manual minimize override my WindowState setter in DataTrigger
所以我在 ResourceDictionary 中将 DataTrigger 绑定到 TriggerButton IsChecked 属性。
按下按钮后,window 进入全屏。
问题是,当我手动最小化 window 时,WPF 在代码中设置了 WindowState 以最小化,它覆盖了我的 DataTrigger setter,所以我无法再次全屏显示。有什么方法可以防止 WPF 覆盖,同时保留 window 最小化的功能?
您可以在后面的代码中使用 属性,而不是根据复选框的 bool 属性 更新 WindowState。
示例:
public WindowState MainWindowState
{
get
{
return (IsChecked) ? WindowState.Maximized : WindowState.Normal;
}
}
private bool _isChecked;
public bool IsChecked
{
get
{
return _isChecked;
}
set
{
_isChecked = value;
OnPropertyChanged("IsChecked");
OnPropertyCHanged("MainWindowState");
}
}
这不是一个很好的 MVVM 方法,但它应该可以完成您想要做的事情。
所以我在 ResourceDictionary 中将 DataTrigger 绑定到 TriggerButton IsChecked 属性。
按下按钮后,window 进入全屏。
问题是,当我手动最小化 window 时,WPF 在代码中设置了 WindowState 以最小化,它覆盖了我的 DataTrigger setter,所以我无法再次全屏显示。有什么方法可以防止 WPF 覆盖,同时保留 window 最小化的功能?
您可以在后面的代码中使用 属性,而不是根据复选框的 bool 属性 更新 WindowState。
示例:
public WindowState MainWindowState
{
get
{
return (IsChecked) ? WindowState.Maximized : WindowState.Normal;
}
}
private bool _isChecked;
public bool IsChecked
{
get
{
return _isChecked;
}
set
{
_isChecked = value;
OnPropertyChanged("IsChecked");
OnPropertyCHanged("MainWindowState");
}
}
这不是一个很好的 MVVM 方法,但它应该可以完成您想要做的事情。