2009-12-15 125 views
4

我有一个将其内容设置为对象(TFS工作项)的选项卡。我有一个WorkTemplate类型的DataTemplate。WPF - 刷新DataTemplate的内容

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

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

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

这一切都行不通。

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

任何想法?

回答

4

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

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

然而,这依赖于具有为其属性绑定的控制,这可能是困难的,如果该控制是在一个DataTemplate的参考。您可以尝试在托管DataTemplate(Tab?)和哪个属性绑定到WorkItem(Content属性?)的控件上执行UpdateTarget(),但我没有测试过。 (我很想知道它是否有效!)

+0

这样做!谢谢!我会注意到未来的搜索者,第一行中的方法调用应该是“GetBindingEpxression”而不是“GetBinding” – Vaccano 2009-12-16 21:31:34

+0

哎呀!感谢Vaccano,修好了! – itowlson 2009-12-16 21:53:22