5

ChildWindow有 CloseButton 和分配给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事件第二次。

谁能帮我找出问题的原因并在没有布尔标志(已执行/!已执行)的情况下帮助解决它?

4

1 回答 1

2

复制自我的评论

问题是因为关闭激活关闭窗口动画以关闭窗口,这意味着按钮事件可用,直到动画完成并关闭窗口,请参阅Silverlight ChildWindow 关闭动画期间用户可以单击任何按钮

一个快速而肮脏的解决方案是添加

((Button)sender).IsEnabled=false;

到您单击处理程序函数的开头。

于 2012-11-19T12:07:33.153 回答