2010-03-26 3 views
1

WPToolkit 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; 
     } 

    } 


} 

아무도 도와 줄 수 있습니까?

미리 감사드립니다.

+0

솔루션을 이미 찾으셨습니까? – Shimmy

답변

0

저는 ItemViewModel이 필요하다고 생각합니다. 이러한 객체를 만들 때 (각 행마다 하나씩); itemViewModel에는 생성 또는 설정자에 대해 (사용자 정의 계산에 따라) 설정되는 추가 속성이 있어야합니다. 따라서 EachRow에 "MoreImportantThanNextOne"이라는 속성이 있으면 ItemVM 관리자에서 설정할 수 있습니다.이 속성은 다음 행의 일부 데이터를 가져옵니다.
그러면 TemplateSelector 재정의에서 ItemVM의 "MoreImportantThanNextOne"속성 값에 액세스하여 올바른 템플릿을 선택할 수 있습니다.