2009-08-21 81 views
1

我使用DataTemplateSelector作爲ListView列標題模板選擇。 ListView本身是在DataTemplate中定義的,並有幾個選項卡。所以,在實踐中,我有相同的DataTemplate(所以ListView也適用於幾個TabItems)。這意味着,如果我選擇標籤{A}並在ListView列{AColumn}上設置XDataTemplate,然後在{B}的ListView(總是相同的列)上切換標籤{B} {AColumn},我們將看到相同的XDataTemplate,因爲它們共享相同的UI數據。所以我創建了一個數據層,用於保存關於{Tab} < - > {ListView:Column} < - > {HeaderContent}的關係信息。這實際上讀取DatatemplateSelector爲了正確地更新用戶屏幕上的用戶界面。 如何根據需要通知DataTemplateSelector根據需要更新當前視圖?通知DataTemplateSelector關於更改

謝謝。

回答

3

我找到了解決這個問題的辦法,並不像我想的那麼困難。該模板應用於ListView列的標題。這足以改變標頭的值,以便生成將自動在DataTemplateSelector上執行SelectTemplate的WPF內部事件。

下面是示例代碼:

if (MyListView != null) 
{ 
     foreach (GridViewColumn col in (MyListView.View as GridView).Columns) 
     { 
      string header = col.Header.ToString(); 
      col.ClearValue(GridViewColumn.HeaderProperty); 
      col.SetValue(GridViewColumn.HeaderProperty, header); 
     } 
} 

就是這樣。 希望這將有助於未來的人。