5

MyChildWindowには、イベントに割り当てられた 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(または)を設定した後に知っているように、ChildWindowを閉じる必要があり、CloseButtonのイベントfalseを発生させる方法はありませんClick2回目。

問題の原因を突き止め、bool フラグ (executed/!executed) なしで問題を解決するのを手伝ってくれる人はいますか?

4

1 に答える 1

2

私のコメントからコピペ

問題は、閉じるとウィンドウを閉じるアニメーションがアクティブになり、ウィンドウが閉じられるためです。つまり、アニメーションが終了してウィンドウが閉じるまで、ボタン イベントを使用できます。「Silverlight ChildWindow を閉じるアニメーション ユーザーが任意のボタンをクリックできる」を参照してください。

迅速で汚い解決策は、追加することです

((Button)sender).IsEnabled=false;

はじめにハンドラ関数をクリックします。

于 2012-11-19T12:07:33.153 に答える