TwoWay数据绑定不更新参考

时间:2011-03-14 20:11:04

标签: data-binding silverlight-4.0

我有一个自定义用户控件(我在这里称之为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引用?

1 个答案:

答案 0 :(得分:0)

使用CollectionViewSource。这将是您的真实项目与绑定到树的源之间的代理源。