Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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将IList绑定到列表控件_Wpf_Data Binding_Mvvm_Ilist - Fatal编程技术网

Wpf 使用MVVM将IList绑定到列表控件

Wpf 使用MVVM将IList绑定到列表控件,wpf,data-binding,mvvm,ilist,Wpf,Data Binding,Mvvm,Ilist,我试图理解MVVM模式,并使用了一个示例程序。该模型是一个C#.net库,查询时返回一个IList对象。我希望我的视图能够通过数据绑定添加/编辑/删除此集合中的项目。但我不知道如何开始使用MVVM。请帮帮我 模型公开了一个检索IList对象的接口, 视图有一个列表框,其中显示了IList的内容,以及两个其他控件,用于向IList添加数据My onDelegateCommand应该为您提供一个良好的基础。My onDelegateCommand应该为您提供一个良好的基础。将您的列表框绑定到一个可观

我试图理解MVVM模式,并使用了一个示例程序。该模型是一个C#.net库,查询时返回一个
IList
对象。我希望我的视图能够通过数据绑定添加/编辑/删除此集合中的项目。但我不知道如何开始使用MVVM。请帮帮我

模型公开了一个检索IList对象的接口,
视图有一个列表框,其中显示了
IList
的内容,以及两个其他控件,用于向
IList
添加数据My on
DelegateCommand
应该为您提供一个良好的基础。

My on
DelegateCommand
应该为您提供一个良好的基础。

将您的列表框绑定到一个
可观察到的集合
每次您从该
可观测集合中添加或删除某些内容时,它都会立即更新

ObservableCollection
通常应该是ViewModel的属性


如果模型中的
IList
属性不可见(并且您无法控制它),则必须编写代码以在ViewModel中同步它。这些都是建筑的问题。我觉得在这方面最干净的选择是实际使用一个
ReadOnlyObservableCollection
,并使用您的存储库添加/删除项目,并进行相应的同步。

将您的列表框绑定到一个
ObservableCollection
,并且每当您从中添加或删除内容时,它都会立即更新
可观察采集

ObservableCollection
通常应该是ViewModel的属性


如果模型中的
IList
属性不可见(并且您无法控制它),则必须编写代码以在ViewModel中同步它。这些都是建筑的问题。在这方面,我觉得最干净的选择是实际使用一个
ReadOnlyObservableCollection
,并使用您的存储库添加/删除项目,并相应地同步。

I将我的列表框绑定到
ObservableCollection
并在该集合中添加/删除/修改项目。它很好用。看看这个。如果我错了,请纠正我

I将我的列表框绑定到一个
可观察集合
,并在该集合中添加/删除/修改项目。它很好用。看看这个。如果我错了,请更正

是否有方法自动执行此同步?就像我们将ObservaleCollection绑定到控件一样,有没有办法将我的库中的IList绑定到我的ViewModel中的ObservaleCollection?似乎你再也不能像以前那样将普通集合包装到ObservaleCollection中了。;-)蛮力方法并不复杂,只需清除列表并从模型中再次读取即可。更优雅的方法是一个自定义的可观察集合类,它利用一些类似哈希集的算法?就像我们将ObservaleCollection绑定到控件一样,有没有办法将我的库中的IList绑定到我的ViewModel中的ObservaleCollection?似乎你再也不能像以前那样将普通集合包装到ObservaleCollection中了。;-)蛮力方法并不复杂,只需清除列表并从模型中再次读取即可。更优雅的方法是一个定制的可观察集合类,它利用了一些类似HashSet的算法。