【发布时间】:2016-06-30 14:30:33
【问题描述】:
我在使用 RenderTargetBitmap 时遇到问题,因为在我更改后台线程上的绑定属性后,我无法让它始终获取更新的渲染。
这是我所拥有的:
// Update a property on an INotifyPropertyChanged view model
// This runs on a background thread
viewModel.SomeBoundProperty += 10;
// Flush dispatcher queue (from http://stackoverflow.com/a/2596035/612510)
_lcd.Dispatcher.Invoke(() => {}, System.Windows.Threading.DispatcherPriority.Loaded);
// Render the updated control
_lcd.Dispatcher.Invoke(() =>
{
_lcd.Measure(new System.Windows.Size(240, 160));
_lcd.Arrange(new System.Windows.Rect(0, 0, 240, 160));
_lcd.UpdateLayout();
_renderTarget.Render(_lcd);
}
唉,大约一半的时间在控件更新为新值之前获得渲染,另一半则正确更新。
据我了解,WPF 会自动向 UI 线程分派属性更改通知。如何确保在渲染之前处理完这些发送的通知?如果我确保在 Dispatcher 线程上更新 SomeBoundProperty,则此代码可以正常工作,但这对于此特定应用程序来说不太理想。
有什么建议吗?
【问题讨论】:
标签: wpf data-binding rendertargetbitmap