2010-03-26 3 views
1

Я использую DataTemplateSelector с WPFoolkit DataGrid. Я хочу выбрать шаблон редактирования для одной ячейки на основе значения другой ячейки в той же строке.WPF - Получение значения одного DataGridCell из DataTemplateSelector

Метод SelectTemplate DataTemplateSelector имеет два аргумента: один элемент данных, отображаемый строкой сетки, другой - ячейка сетки.

Что я хочу знать, так это как получить значение другой ячейки из метода 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 должен иметь дополнительные свойства, которые устанавливаются (согласно вашим пользовательским вычислениям) при создании или через сеттеры. поэтому, если у EveryRow есть свойство, называемое MoreImportantThanNextOne, вы можете установить его в ItemVM ctor, который принимает некоторые данные для следующей строки.
Затем в переопределении TemplateSelector вы можете просто получить доступ к значениям свойств MoreImportantThanNextOne элемента ItemVM, чтобы выбрать правильный шаблон.