Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何将MVVM模型中的列表转换为视图模型中的可观察集合?_Wpf_Silverlight_Mvvm_Observablecollection - Fatal编程技术网

Wpf 如何将MVVM模型中的列表转换为视图模型中的可观察集合?

Wpf 如何将MVVM模型中的列表转换为视图模型中的可观察集合?,wpf,silverlight,mvvm,observablecollection,Wpf,Silverlight,Mvvm,Observablecollection,我正在用WPF编写一个示例应用程序,我希望该模型能够在WinForms应用程序中轻松重用,因此我希望不要使用特定于WPF的内容,如INotifyChanged和DependencyObjects 如果一个模型类有一个其他模型类的列表,那么如何在视图模型中实现相应的ObserveableCollection,以便使绑定保持最新 这方面的一个用例是,如果我有一个老板模型对象,它有一个员工的列表。我创建了一个Boss对象,但异步加载了员工列表,如何知道员工列表何时被检索和填充?我希望将加载代码保存在模

我正在用WPF编写一个示例应用程序,我希望该模型能够在WinForms应用程序中轻松重用,因此我希望不要使用特定于WPF的内容,如INotifyChanged和DependencyObjects

如果一个模型类有一个其他模型类的列表,那么如何在视图模型中实现相应的ObserveableCollection,以便使绑定保持最新

这方面的一个用例是,如果我有一个老板模型对象,它有一个员工的列表。我创建了一个Boss对象,但异步加载了员工列表,如何知道员工列表何时被检索和填充?我希望将加载代码保存在模型中


我想总结一下,我要问的是,在视图模型反映这些更改的同时,模型间交互的正确方式是什么?

您的模型需要提供更改通知。您可以使用
INotifyPropertyChanged
INotifyCollectionChanged
以不可知的方式执行此操作。与您的问题相反,这些不是特定于WPF的接口。它们位于
System.ComponentModel
中-不是WPF命名空间或程序集


如果您真的不想使用这些接口,那么您可以随时提供自己的事件。无论何种情况,视图模型都需要附加到事件以使其与模型保持最新。

您的模型需要提供更改通知。您可以使用
INotifyPropertyChanged
INotifyCollectionChanged
以不可知的方式执行此操作。与您的问题相反,这些不是特定于WPF的接口。它们位于
System.ComponentModel
中-不是WPF命名空间或程序集


如果您真的不想使用这些接口,那么您可以随时提供自己的事件。无论何种情况,视图模型都需要附加到事件,以使其与模型保持同步。

给定您的示例,您是否也希望在UI中异步显示员工的加载?还是只想在完成加载后显示整个集合?是异步。。。因此,例如,如果集合绑定到一个列表框,那么每当异步调用返回时,它们就会显示出来?还是只想在完成加载后显示整个集合?是异步。。。例如,如果集合绑定到一个listbox,那么每当异步调用返回时,它们就会出现。谢谢,我希望有其他模式可以做到这一点,但看起来不会。另外,我想我总是把INotifyPropertyChanged与WPF联系起来,因为它在那里被大量使用!谢谢,我希望有其他的模式来做这件事,但看起来不会。另外,我想我总是把INotifyPropertyChanged与WPF联系起来,因为它在那里被大量使用!