使用Dispatcher时真正分离代码和表示

Sau*_*aul 10 .net c# wpf

在我的WPF中尝试将我的类逻辑与任何接口相关的数据分开,并仅提供ObservableCollection属性进行绑定.

问题是,当我从其他线程访问那些绑定的OC时,我需要通过调度程序执行此操作.结果是,每当其中一个方法尝试更新OC时,我都需要添加许多隐藏在我的类中的Dispatcher.Invoke()调用.

我怎么能以更干净和分离的方式做到这一点,所以调度员调用是从我的方法中抽象出来的?

Vit*_*lyB 2

选项1

我认为您应该考虑使用 MVVM 模式更好地分离代码,如果您不熟悉它,我强烈建议您观看以下视频,因为它准确地解释了您正在寻找的内容。

但是,具体而言,在您的情况下,您应该拥有具有常规集合(例如列表)的模型类,您可以在其上完成线程中的所有工作。您的ViewModel应包含 ObservableCollections 并松散连接与模型中存在的集合您仍然需要使用 Dispatcher 来更新 OC,但只需执行一次。

选项2

您可以只使用此处描述的解决方案。基本上,他从 OC 创建了一个新的派生类,允许您自动调度代码中的更改,而无需自己更新调度程序。