依赖属性更新两次

时间:2015-01-09 07:41:30

标签: c# wpf dependency-properties

正如标题所说,我在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

0 个答案:

没有答案