2010-03-26 26 views
1

我在WPFToolkit DataGrid中使用DataTemplateSelector。我想根據同一行上另一個單元格的值爲一個單元格選擇編輯模板。WPF - 從DataTemplateSelector中獲取一個DataGridCell的值

DataTemplateSelector的SelectTemplate方法有兩個參數:一個是網格行顯示的數據項,另一個是網格單元格。

我想知道的是如何從SelectTemplate方法中獲取另一個單元格的值。但是,我不確定通過訪問單元的屬性來獲取這些信息的正確方法。

public class RangeValuesEditTemplateSelector : DataTemplateSelector 
{ 
    public DataTemplate NumberTemplate{get; set;} 
    public DataTemplate TextTemplate{get; set;} 

    public override DataTemplate SelectTemplate(object item, DependencyObject container) 
    { 
     //TODO: need to find the correct way to populate the if condition below 
     DataGridCell theCell = container as DataGridCell; 


     if (theCell.something.somethingElse) 
     { 
      return NumberTemplate; 
     }else{ 
      return TextTemplate; 
     } 

    } 


} 

任何人都可以幫忙嗎?

非常感謝提前。

AT

+0

您是否已經找到解決方案? – Shimmy

回答

0

我想你需要一個ItemViewModel。當你創建這些對象時(每行一個); itemViewModel應該有創建或通過setter設置的額外屬性(按照您的自定義計算)。所以如果EachRow有一個名爲「MoreImportantThanNextOne」的屬性,您可以在ItemVM ctor中進行設置,這會爲下一行獲取一些數據。
然後在TemplateSelector覆蓋中,您可以訪問ItemVM的「MoreImportantThanNextOne」屬性值以選擇正確的模板。