【发布时间】:2010-09-28 20:51:04
【问题描述】:
我在 WPF 控件上的 WindowsFormsHost 中有一个 winforms 控件。 WPF 控件仅在某些时候可见,当它变得可见时,winforms 控件的内容通常会发生变化。
当 WPF 控件的 ViewModel 发生更改时,我会更改 winforms 控件的内容,并且 WPF 控件变得可见。
不幸的是,winforms 控件的先前内容被重新绘制,就像来自视觉缓存一样。我已经通过调试器运行了它,并且我知道 winforms 控件正在更新其数据,但在我重新调整程序窗口大小之前它不会重新绘制(当明显触发重新绘制时)。
我已经尝试过 Winforms 控件上的 Invalidate() 以及 WPF 控件的 DataContextChanged 事件处理程序内的 WPF 控件上的 InvalidateVisual()、InvalidateArrange() 和 InvalidateMeasure(),但似乎因为 WPF 控件不是此时可见(它即将变得可见)这些方法调用被吞没了。
关于如何在托管 WPF 控件变得可见后立即强制重绘 WinFormsHost ed winforms 控件,有人有什么聪明的想法吗?
【问题讨论】: