1

我的模型包含我从代码隐藏更新的大型数据对象(目前这发生在 UI 线程上,但我打算稍后在工作人员中执行此操作)。我的一个窗口具有此模型的视图模型,并使用IValueConverter. 问题是这种转换需要几秒钟。因此,我需要我的窗口来异步获取这些更新的数据。如何才能做到这一点?

MyControl.xaml:

<UserControl.DataContext>
   <local:DataViewModel x:Name="dataViewModel"/>
</UserControl.DataContext>

然后在代码中:

// This triggers my value converter and blocks the UI for several seconds!
dataViewModel.HeavyObject = data;

多线程代码应该去哪里?它应该是视图模型的一部分还是我的价值转换器?

4

2 回答 2

1

查看IsAsync="True"您的绑定并检查PriorityBinding.

在这里您可以找到有关 PriorityBinding 的更多信息

于 2012-10-26T12:17:06.517 回答
1

如果在您的视图模型和值转换器之间进行选择,我会投票支持视图模型。但是,我更愿意在负责与数据存储交互的存储库或客户端服务中看到您的长期运行操作。

于 2012-10-26T12:19:04.937 回答