WPFで強制的にコントロールを再描画する

WPF WPF
Sponsored links
Sponsored links

コントロールを再描画したい

簡単な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();
 :
タイトルとURLをコピーしました