【发布时间】:2011-09-06 18:39:07
【问题描述】:
我有一个 MVVM 实现,其中我有一个 WPF ListBox,它将包含一组子 WPF Image 控件。每个控件的 Source 可能每秒更改 3 次。当我的列表中只有一张图片时,生活是美好的,我的应用程序是响应式的。当我开始有 4 或 5 个我的应用程序子图像时,我的应用程序开始打磨,我还应该提到,我必须为我拥有的每个新的和/或更新的图像进行 Bitmap 到 BitmapSource 的转换。
我应该如何更新我的子控件 Source 属性,同时让我的应用程序尽可能地响应?
这是我的 ViewModel 中的当前代码:
public BitmapSource CameraBitmapSource
{
get
{
Application.Current.Dispatcher.BeginInvoke((Action)delegate
{
BuildImageSource();
}, DispatcherPriority.Background);
return this.cameraBitmapSource;
}
}
BuildImageSource() 是我获取新位图并转换为 BitmapSource 然后分配给我的私有 cameraBitmapSource 对象的位置。
【问题讨论】:
-
WPF 不是动画的好选择。你正试图用扳手敲钉子
-
@Jay:我不确定这是否准确。这种动画方法,通过数据绑定更新图像属性,我同意你的看法。但是WPF通过storyboards等直接支持其他类型的动画。
标签: wpf multithreading image mvvm