0 c# wpf list observablecollection mvvm
最近,我一直在尝试实现MVVM设计模式,但我遇到了两个我无法解决的问题:
在我看来,我必须在我的Model类中使用ObservableCollection,以便将它在ModelView中传递给View.我希望我错了,因为View不能影响Model结构,我不应该局限于这个特定的集合类型.
有没有办法用值类型项目列表进行双向绑定?
例:
public ObservableCollection<bool> MyBooleans
{
get { return m_booleans; }
}
Run Code Online (Sandbox Code Playgroud)
<ListView ItemsSource="{Binding MyBooleans}" ...>
<ItemTemplate>
...
<CheckBox IsChecked="{Binding}" ... />
...
</ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)
您的视图模型应该公开更改的集合(即添加/删除项目)ObservableCollections(或实现的其他类INotifyCollectionChanged).但这并不意味着你的模型需要实现该接口暴露集合.
您的视图模型实际上是模型上的适配器,使其更容易绑定.例如,如果您的应用程序显示推文,您的服务层可能会返回一个推文列表的模型.然后,您的视图模型会将这些插入到可观察的集合中,从而使您的视图得到更新.然后,您可以在将来的某个时间点(使用计时器)通过您的服务检索新推文,这些推文将再次作为列表返回.然后,您的视图模型会将这些推文添加到其中,ObservableCollection从而导致新项目在视图中可见.
| 归档时间: |
|
| 查看次数: |
547 次 |
| 最近记录: |