gpt4 book ai didi

c# - View 模型公开的集合必须使用 MVVM 模式实现 ObservableCollection

转载 作者:行者123 更新时间:2023-12-03 10:52:20 26 4
gpt4 key购买 nike

最近,我一直在尝试实现 MVVM 设计模式,但是遇到了两个我无法解决的问题:

  • 正如我所看到的,我必须在我的模型类中使用 ObservableCollection,以便将它在 ModelView 中传递给 View。我希望我错了,因为 View 不能影响 Model 结构,我不应该局限于这个特定的集合类型。
  • 有没有办法对值类型的项目列表进行双向绑定(bind)?

  • 例子:

    public ObservableCollection<bool> MyBooleans
    {
    get { return m_booleans; }
    }

    <ListView ItemsSource="{Binding MyBooleans}" ...>
    <ItemTemplate>
    ...
    <CheckBox IsChecked="{Binding}" ... />
    ...
    </ItemTemplate>
    </ListView>

    最佳答案

    您的 View 模型应将更改的集合(即添加/删除项目)公开为 ObservableCollections (或其他实现 INotifyCollectionChanged 的类)。这是不是 意味着您的模型需要公开实现此接口(interface)的集合。

    您的 View 模型实际上是模型上的适配器,使其更易于绑定(bind)。例如,如果您的应用程序显示推文,您的服务层可能会返回一个模型,该模型是推文列表。然后,您的 View 模型会将这些插入到可观察的集合中,从而更新您的 View 。然后,您可以在 future 某个时间点(使用计时器)通过您的服务检索新推文,这些推文将再次作为列表返回。然后,您的 View 模型会将这些推文添加到其 ObservableCollection导致新项目在 View 中可见。

    关于c# - View 模型公开的集合必须使用 MVVM 模式实现 ObservableCollection<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180480/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com