2009-12-15 128 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