WPF - 刷新DataTemplate的内容

4
我有一个选项卡,其内容设置为一个对象(TFS WorkItem)。我有一个WorkItem类型的DataTemplate。
当我将对象设置为选项卡时,它会显示得很好。
然而,当我更新对象上的其中一个集合(链接列表)时,此更改不会刷新到视图中。
我尝试使我的WorkItem成为DependencyProperty,并尝试将选项卡内容的值设置为null,然后再次设置为我的对象(希望它会重新加载)。
这些都没有起作用。
通常情况下,我会使用ObservableCollection来存储链接,但由于我不拥有WorkItem类,因此需要一种不同的解决方案来手动刷新DataTemplate。
有什么想法吗?
1个回答

4
为了刷新UI,可以调用BindingExpression.UpdateTarget来强制绑定。要获取给定元素的绑定表达式(在您的情况下,我假设是ItemsSource),请使用BindingOperations.GetBindingExpression。例如:
BindingExpression bindingExpr = BindingOperations.GetBindingExpression(linksListBox, ListBox.ItemsSourceProperty);
bindingExpr.UpdateTarget();  // refreshes the ItemsSource

然而,这取决于是否有绑定属性的控件的引用,如果控件位于DataTemplate中可能会很困难。您可以尝试在托管DataTemplate的任何控件(选项卡?)上执行UpdateTarget(),并且绑定到WorkItem的任何属性(Content属性?),但我还没有测试过这个方法。(如果它起作用我会很感兴趣知道!)

搞定了!谢谢!我想提醒未来的搜索者,第一行中的方法调用应该是“GetBindingExpression”,而不是“GetBinding”。 - Vaccano
糟糕!感谢Vaccano,已修复! - itowlson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接