0

私は今日、この例を試しました => http://weblogs.asp.net/psteele/archive/2011/05/31/wpf-simple-busy-overlay.aspxウィンドウの単純なオーバーレイで、ユーザーが自分のアクションを進めていることを示します. しかし、私には少し問題があります。アクションを進める関数IsBusyでは、最初のプロパティをtrueに、最後のプロパティを に切り替えますfalse。しかし、GUI が更新されず、オーバーレイが表示されません。オーバーレイを切り替えるために追加のボタンを試してみましたが、機能します。

なぜ私がこの問題を抱えているのか誰かが知っていますか? バインド操作の優先順位と関係があると思いますが、正確にはわかりません。

4

2 に答える 2

1

UIにその変更を認識させるにはIsBusy、プロパティが依存関係プロパティであるか、インターフェイスを実装する必要があります。INotifyPropertyChangedそうしないと、UI はプロパティが設定されていることを認識できず、オーバーレイが表示されません。

不明な理由により、これはサンプルのサンプルソースでは行われていないため、そこでも機能しないはずです。つまり、基本的にはプロパティPropertyChangedを設定してからイベントを発生させたいということです。IsBusy

于 2013-10-15T09:27:13.610 に答える
1

独自のコードを見ずに...

IsBusyUI/メインスレッドでプロパティを切り替える操作が行われている可能性はありますか? では、プロパティを true に設定してから false に戻すまでの間、UI は実際には「リフレッシュ」する機会がありませんか?

設定するだけIsBusy = trueで false に戻さない場合、オーバーレイは表示されますか? はいの場合、これがおそらく起こっていることです。UI を更新できるように、別のスレッドでメソッドを呼び出す必要があります。

于 2013-10-15T09:23:15.427 に答える