正如标题所说,我在DependencyProperty
上有一个UserControl
,其IEnumerable
类型为Interface
,我的DependecyProperty
看起来很public static readonly DependencyProperty ItemSourceProperty = DependencyProperty.Register("ItemSource", typeof(IEnumerable<IPerson>), typeof(PersonListUserControl), new PropertyMetadata(ChangedValue));
public IEnumerable<IPerson> ItemSource
{
get { return (IEnumerable<IPerson>)GetValue(ItemSourceProperty); }
set { SetValue(ItemSourceProperty, value); }
}
像这样:
IEnumerable
此ItemsSource
用作ItemsControl
的{{1}},但我所经历的是此集合,最后调用ChangedValue
方法,DependecyProperty
中定义的是NULL
。
private static void ChangedValue(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var uc = d as PersonListUserControl;
if (uc != null)
{
var oldValue = (IEnumerable<IPerson>) e.OldValue;
var newValue = (IEnumerable<IPerson>)e.NewValue;
}
}
此UserControl在Window中使用,并按如下定义:
<personUserControl:PersonListUserControl ItemSource="{Binding PersonCollection}"/>
有没有人有一个好的解决方案?
这里要求的是使用我的DP的XAML
的{{1}}代码
UserControl