コントロールを再描画したい
簡単なWPFのプログラムを作っているときに、処理の途中でコントロールを再描画したくなる時があります。行儀・作法的にはあまりよくないと思いますが、簡単なデバッグ用ツールなどでは行儀よりも工数の方が重要なときがありますので、時々やりたい状況が発生します。
Windows FormではUpdateメソッドで即時更新できるのですが、WPFにはありません。
毎回忘れて調査しているので、忘備録として記述しておきます。
強制表示の解決方法
DoEventsメソッドを登載し、強制表示したいときに呼び出せばOKです。
実装例
using System.Windows.Threading; // DispatcherFrame
/// <summary> メッセージ待ち行列中のUIメッセージを処理
///
/// </summary>
private void DoEvents()
{
DispatcherFrame frame = new DispatcherFrame();
var callback = new DispatcherOperationCallback(obj =>
{
((DispatcherFrame)obj).Continue = false;
return null;
});
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, callback, frame);
Dispatcher.PushFrame(frame);
}
使用例
:
TextBlock.text = "即時更新”;
DoEvents();
: