2011-03-04 19 views
0

我有一个自定义面板控件,旨在用作项目控件中的项目面板模板。项目控制数据源的项目属性更新,未在项目控件的项目面板模板实例中反转

itemscontrol将数据绑定到数据源。

此数据源是一个List,列表中的每个项目都是一个自定义业务对象。 在应用程序中,用户能够更新列表中的每个业务对象,并且按照预期触发属性通知的更改。

现在我的问题是在这里:

当用户更新对象的数据源,该项目控件绑定到的属性(在列表中ITMS),我自定义面板控制无法获取通知,因此项目控件不会更新其视图中的更新项目。

我尝试使用ObservableCollection而不是List - 问题仍然是相同的。

我必须在这里丢失一些基本的东西...请帮助任何指针,答案或解决方案。

+1

发布您的列表项目代码和ItemsControl XAML – Snowbear 2011-03-04 14:49:19

回答

0

更改集合中的通知有点棘手。假设你有一系列产品。您可以实施更改通知是三个不同的地方。在产品类(实现在class ProductINotifyPropertyChanged)集合本身在

  • 更改通知

    1. 变更通知(即使用的ObservableCollection)在持有集合类
    2. 更改通知,也就是说,在包含集合的类上实现INotifyPropertyChanged。 (通常这将是MVVM下的ViewModel)

    那些树的方式是不一样的,每个都是针对不同的情况。

    假设集合为ObservableCollection<Product> Products {get;set;} 如果你想在产品变更登记(即,如果你正在做一些像Products[0].Name = "New Product";然后#1是正确的。

    如果你想要做Products.Add(new Product(...))然后#2是正确的。

    如果你想要做Products = new ObservableCollection<Product>()然后#3是正确的。这是特别棘手,因为我不会改变的集合,而是创建一个新一个,所以的ObservableCollection将无济于事 - 我需要在包含类中实现INPC

  • +0

    业务对象正在实现INotifyPropertyChanged接口。 – WPFLove 2011-03-04 14:59:34

    +0

    然后我加入@ snowbear的请求 - 显示相关的代码 – 2011-03-05 00:00:26