代码之家  ›  专栏  ›  技术社区  ›  Vaccano

wpf-刷新数据模板的内容

  •  4
  • Vaccano  · 技术社区  · 15 年前

    我有一个选项卡,它的内容被设置为一个对象(一个TFS工作项)。我有一个工作项类型的数据模板。

    当我将对象设置为选项卡时,它会很好地显示出来。

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

    我尝试将我的工作项设置为DependencyProperty,并尝试将选项卡内容的值设置为空,然后再次将其设置为我的对象(希望它将重新加载)。

    这些都不行。

    通常我只使用一个可观察的集合来存储链接,但是由于我不拥有WorkItem类,所以我需要一个不同的解决方案来手动刷新数据模板。

    有什么想法吗?

    1 回复  |  直到 15 年前
        1
  •  4
  •   itowlson    15 年前

    若要强制绑定刷新UI,请调用BindingExpression.UpdateTarget。要获取给定元素的绑定表达式(在您的情况下,我假定使用itemssource),请使用bindingOperations.getbindingExpression。例如。

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

    但是,这依赖于对其属性已绑定的控件的引用,如果该控件位于DataTemplate中,则这可能很困难。您可以尝试在承载数据模板(选项卡?)的任何控件上执行updateTarget()。以及绑定到工作项的属性(内容属性?)但我还没有测试过这个。(我想知道它是否有效!)