WindowsFormsHostとGridSplitterのねばねばした関係
全ての画面を作るというわけにいかないプロジェクトもあるので、WindowsFormsHostをグリッド上に配置するというケースも時々あるかと思います。 そんなときに、GridSplitterを入れるとWindowsFormsのコントロールが酷い描画をするという話はよく聞きます。
そんなときの処方がこれです。
public class ImmediateWindowsFormsHost : WindowsFormsHost { public ImmediateWindowsFormsHost() { SizeChanged += ImmediateWindowsFormsHost_SizeChanged; } private void ImmediateWindowsFormsHost_SizeChanged(object sender, SizeChangedEventArgs e) { Child.Refresh(); } }
あまり模範的なつくりではありませんが、要はリサイズしたときに即時再描画を行えばいいのです。 SizeChangedが最良かどうかもわかりませんが。
WindowsFormsHostの中身は別ウィンドウが単にWPFの画面上に乗っかっているにすぎません。 その性質を利用するということです。
ほんと・・・時として工数削減のための割り切りも必要になりますよね。