我有一个自定义用户控件(我在这里称之为Tree),它为DependecyProperty
集合定义IEnumerable
。
public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.RegisterAttached("ItemsSource", typeof(IEnumerable), typeof(RadTreeView));
我有一个排序例程,它会创建一个新的集合实例。
ItemsSource = ItemsSource.Cast<object>().OrderBy(x => TypeHelper.GetPropertyValue(x, SortField.Path), SortField.GetComparer()).ToList();
使用已排序的树正确更新UI,但是,由于sort函数创建了一个新的集合引用,因此源DataContext现在具有对该集合的旧引用。
在使用Tree控件的UserControl中,我已将ItemsSource
绑定设置为TwoWay
,但这不符合我的预期,自动使用新绑定更新源绑定参考
<Tree ItemsSource="{Binding Organizations, Mode=TwoWay}" />
在对集合
进行排序后,我还尝试显式更新源绑定GetBindingExpression(ItemsSourceProperty).UpdateSource();
如何通过依赖项更改源DataContext引用?