WPF - 刷新DataTemplate的内容

时间:2009-12-15 22:42:21

标签: wpf data-binding datatemplate

我有一个标签,其内容设置为一个对象(TFS WorkItem)。我有一个WorkItem类型的DataTemplate。

当我将对象设置为选项卡时,它显示得非常好。

但是,当我更新对象上的一个集合(链接列表)时,此更改不会刷新到视图。

我试过让我的WorkItem成为DependencyProperty,我也尝试将标签内容的值设置为null然后再设置为我的对象(希望它会重新加载它)。

这些都不起作用。

通常我会使用一个可观察的集合来存储链接,但由于我不拥有WorkItem类,我需要一个不同的解决方案来手动刷新DataTemplate。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

要强制绑定刷新UI,请调用BindingExpression.UpdateTarget。要获取给定元素的绑定表达式(在您的情况下,我假设一个ItemsSource),请使用BindingOperations.GetBindingExpression。 E.g。

BindingExpression bindingExpr = BindingOperations.GetBindingExpression(linksListBox, ListBox.ItemsSourceProperty);
bindingExpr.UpdateTarget();  // refreshes the ItemsSource

但是,这依赖于对属性绑定的控件的引用,如果控件位于DataTemplate中,则可能很难。您可以尝试在托管DataTemplate的任何控件(Tab?)和绑定到WorkItem的任何属性(Content属性?)上执行UpdateTarget()但我还没有测试过。 (我很想知道它是否有效!)