我正在使用Silverlight 5开发一个丰富的用户界面。我有很多ChildWindows。 子窗口有一些与命令绑定的按钮。我意识到如果调用Child Window Close方法,则开始关闭动画。但是在动画期间,用户可以单击任何按钮,这会导致意外情况。为了防止这种情况,我需要在关闭请求时立即取消绑定所有按钮。我不喜欢把这个逻辑放在任何地方。你有更好的解决方案吗?
<Grid x:Name="LayoutRoot" DataContext="{StaticResource ResourceKey=viewModel}">
<StackPanel>
<TextBlock Text="{Binding ConfirmMessage}" HorizontalAlignment="Center" Margin="5"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button Width="120" Height="30" Content="Yes" Margin="5" Command="{Binding ConfirmedCommand}"/>
<Button Width="120" Height="30" Content="No" Margin="5" Command="{Binding RejectedCommand}"/>
</StackPanel>
</StackPanel>
</Grid>
为了澄清,请使用包含上述内容的简单子窗口。并将ConfirmedCommand和RejectedCommand绑定到执行信息性消息框的简单命令。 尝试关闭子窗口与右上角的关闭按钮。在动画期间,快速单击其中一个按钮。你会看到这条消息。
编辑:我删除了关闭动画,它以另一种方式解决了问题。对于那些想要动画的人来说,原始问题仍然存在。