我的ChildWindow
将关闭按钮和处理程序分配给Click
事件。代码(仅示例):
声明关闭按钮:
<Button x:Name="CloseButton" Click="OnCloseButtonClick" />
专用计数器(用于诊断问题):
private uint _i;
关闭事件处理程序:
OnCloseButtonClick(object sender, RoutedEventArgs e)
{
DialogResult = true;
System.Diagnostics.Debug(_i++);
}
快速点击程序后可以输出"1"、"2"、"3"等...正如我知道在设置 DialogResult
= true
(或 false
)后,应该关闭 ChildWindow,并且不应该有任何方法可以第二次引发 CloseButton 的Click
事件。
任何人都可以帮助我找出问题的原因并帮助解决它而无需布尔标志(已执行/!
从我的评论中复制
此问题是因为关闭会激活关闭窗口动画以关闭窗口,这意味着按钮事件在动画完成且窗口关闭之前可用,请参阅 在 Silverlight 子窗口关闭动画期间,用户可以单击任何按钮
一个快速而肮脏的解决方案是添加
((Button)sender).IsEnabled=false;
到你开始点击处理程序函数。