Silverlight 5 を使用してリッチなユーザー インターフェイスを開発しています。多数の ChildWindows があります。子ウィンドウには、コマンドにバインドされた一種のボタンがあります。チャイルド ウィンドウの 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 を、有益なメッセージ ボックスを実行する単純なコマンドにバインドします。右上の閉じるボタンで子ウィンドウを閉じてみてください。アニメーション中にボタンの 1 つをすばやくクリックします。メッセージが表示されます。
編集:閉じるアニメーションを削除しましたが、別の方法で問題を解決しました。アニメオリジナルの問題はそのままで欲しい方へ。