我是WPF的新手,我的应用程序中有一个用户控件,它具有List类型的依赖属性。
在我的窗口中,我放置了该用户控件并将此DP绑定到我视图列表的属性。
最终属性会更改,因此集合会更改,但不会反映在用户控件上。
我的视图实现了INotifyPropertyChanged接口。
我的用户控件的DP不会引发属性更改事件。
可能的原因是什么?
我的用户控件中的依赖项属性的代码
public List<ItemsResult> ItemsCollection
{
get { return (List<ItemsResult>)GetValue(ItemsCollectionProperty); }
set { SetValue(ItemsCollectionProperty, value); }
}
public static readonly DependencyProperty ItemsCollectionProperty =
DependencyProperty.Register("ItemsCollection", typeof(List<ItemsResult>), typeof(ListingUserControl)
, new FrameworkPropertyMetadata(null, ItemsCollectionChanged));
private static void ItemsCollectionChanged(DependencyObject obj, DependencyPropertyChangedEventArgs eventArgs)
{
var listingUserControl = (obj as ListingUserControl);
var itemsResult = (eventArgs.NewValue as List<ItemsResult>);
if (listingUserControl != null && itemsResult != null)
listingUserControl.CountLabelVisible = itemsResult.Count > 0;
}
在我看来绑定
<my:ListingUserControl ItemsCollection="{Binding Clients}" Title="Client" />
答案 0 :(得分:0)
在这种情况下,像HighCore写的那样,它不会在collectionchange的情况下触发任何事件,但只在绑定更改时触发一次。你可以做的是,检查有界集合实现INotifyCollectionChanged的天气。像:
var itemsResult = (eventArgs.NewValue as INotifyCollectionChanged);
if (itemsResult != null)
{
itemsResult.CollectionChanged += OnItemsSourceCollectionChanged;
}
然后您可以监控集合更改。