【问题标题】:ObservableCollection<T> consisting of other 7 other ObservableCollection<T> s collectionsObservableCollection<T> 由其他 7 个 ObservableCollection<T> 的集合组成
【发布时间】:2012-01-07 11:56:28
【问题描述】:

我将有一个 7 个小的“购物清单”,然后是一个包含 7 个小“购物清单”中所有物品的大清单。

是否可以使用 databind 和 observablecollection 以便从小列表中添加/删除/更改的内容在大列表中更新?

public ObservableCollection<ShopItem> MondayShopList{ get; set; }
public ObservableCollection<ShopItem> TuesdayShopList{ get; set; }
public ObservableCollection<ShopItem> WedensdayShopList{ get; set; }
public ObservableCollection<ShopItem> ....
public ObservableCollection<ShopItem> TotalShopList { get; set; }

【问题讨论】:

    标签: c# .net wpf data-binding


    【解决方案1】:

    我为你看到了 3 个替代方案...

    1. 实现复合 ObservableCollection。如果没有这样的东西,你可以通过实现INotifyCollectionChanged 来构建一个
    2. 将所有项目加载到总列表中,并对 dayweek 集合的集合更改事件做出响应,并对完整集合进行更新
    3. 执行小的架构更改并将工作日信息附加到 ShopItem。现在您可以将它们全部保存在一个列表中,并显示大列表的过滤部分。

    【讨论】:

    【解决方案2】:

    不,如果不使用支持分层数据绑定的WPF TreeView 控件,则无法对嵌套集合进行数据绑定。如果要显示子集合的内容,单独绑定到Ui。他们是另一个孩子的事实是代码隐藏的问题,没有必要反映其在Ui 上的确切关系表示。

    有关实现这些场景的具体帮助,请查看this MSDN article

    【讨论】:

    • 不是这样的,可以使用TreeView控件来表示集合的集合。
    • @m-y:您创建了严格的约束来使用一个特定的控件来解决此问题。问题很笼统。对此的一般解决方案是在不同控件之间切片您的数据模型,TreeView 控件本身能够托管分层数据是一种特殊情况。
    • 我只是在评论您回答中的这句话:“不,不可能对嵌套集合进行数据绑定。”我并不是说 OP 应该走这条路,只是说它 is 代表 UI 中的集合集合。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2011-09-09
    • 2011-04-04
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多