我正在寻找3年前a WPF bug that was raised on MSDN的解决方法。在线程上,提出该问题的人建议,可以使用“命令而不是EventHandler”来解决该问题。我不知道该怎么做!
我有一个包含向导的WPF应用程序(以下是this广受好评的示例)。向导的每个页面都有一个“关闭”按钮:
如果用户说“否”,则向导不应关闭。但是,由于上述错误,无论如何它将关闭!
我的观点只有这样:
<Button Text="Close" Click=OnCloseClick IsCancel="True"/>
我的点击处理程序:
private void OnCloseClick(object sender, RoutedEventArgs e)
{
if (UserConfirmsTheyWantToLoseChanges())
{
OnReturn(new ReturnEventArgs<MyWizardResult>(MyWizardResult.Canceled));
}
else
{
e.Handled = true;
}
}
任何人都可以给我一个简单的示例,说明如何使用Command模式对其进行重新制作吗?
答案 0 :(得分:0)
您可以替代对话框窗口的Click
方法,而不是处理Button
的{{1}}事件:
OnClosing
XAML:
protected override void OnClosing(CancelEventArgs e)
{
if (UserConfirmsTheyWantToLoseChanges())
{
OnReturn(new ReturnEventArgs<MyWizardResult>(MyWizardResult.Canceled));
}
else
{
e.Cancel = true;
}
}