在Silverlight儿童窗口关闭动画期间,用户可以单击任何按钮

在Silverlight儿童窗口关闭动画期间,用户可以单击任何按钮,silverlight,animation,childwindow,Silverlight,Animation,Childwindow,我正在使用Silverlight 5开发一个丰富的用户界面。我有很多窗户。 子窗口有一些与命令绑定的按钮。我意识到,若调用了子窗口关闭方法,关闭动画就会开始。但是,在动画过程中,用户可以单击任何按钮,这会导致意外情况。为了防止这种情况,我需要在关闭请求时立即解除所有按钮的绑定。我不喜欢把这种逻辑放在任何地方。你有更好的解决办法吗 <Grid x:Name="LayoutRoot" DataContext="{StaticResource ResourceKey=viewModel}">

我正在使用Silverlight 5开发一个丰富的用户界面。我有很多窗户。 子窗口有一些与命令绑定的按钮。我意识到,若调用了子窗口关闭方法,关闭动画就会开始。但是,在动画过程中,用户可以单击任何按钮,这会导致意外情况。为了防止这种情况,我需要在关闭请求时立即解除所有按钮的绑定。我不喜欢把这种逻辑放在任何地方。你有更好的解决办法吗

<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绑定到执行信息性消息框的简单命令。 尝试用右上角的关闭按钮关闭子窗口。在动画过程中,快速单击其中一个按钮。您将看到消息


编辑:我已经删除了关闭动画,它以另一种方式解决了问题。对于那些想要动画的人来说,最初的问题仍然是一样的。

你可以通过在网格中分层一个不透明度低的UI组件来解决这个问题,这样它就不会在视觉上出现,但会阻止点击它下面的项目。这是一个好主意。我认为这个解决方案必须在组件级别完成。手动操作仍然很烦人。