2011-05-02 5 views
0

특정 셀 내용의 값이 주어지면 전체 행이 아닌 DataGridCell의 전경색을 변경하려고합니다. 예를 들어 셀의 날짜 값이 오래된 경우 Foreground를 빨간색으로 설정하려고합니다. 데이터 격자에서 두 개의 값을 추출하고 IMultiValueConverter를 구현하는 값 변환기를 통해 구문 분석하는 데는 MultiBinding을 사용하고 있습니다. 한마디로 MultiBinding을 사용하여 WPF DataGrid 셀의 전경색을 변경하는 중 문제가 발생했습니다.

다음없이이 컨버터 자체에 갈 필요가, 나는 다음과 같은 XAML 작성한`

<Style x:Key="CellHighlighterStyle"> 
     <Setter Property="my:ExtendedDataGrid.Foreground"> 
      <Setter.Value> 
       <MultiBinding Converter="{StaticResource cellHighlighterConverter}"> 
        <MultiBinding.Bindings> 
         <Binding RelativeSource="{RelativeSource self}"/> 
         <Binding Path="Row" Mode="OneWay"/> 
        </MultiBinding.Bindings> 
       </MultiBinding> 
      </Setter.Value> 
     </Setter>    
    </Style> 

I then added to my Datagrid : CellStyle을 = "{정적 리소스 CellHighlighterStyle} '`.

이제 내 변환기는 DataGridCell로 첫 번째 Value[0] 속성을보고 두 번째 값은 일종의 DependencyProperty로 구성됩니다. 실제로 행을 가져 오려고 할 때 기본 속성 또는 더미 속성을 만든 것과 같습니다. 사실, 나는 그 클래스에 연결된 클래스 객체를 얻고 싶다. 내 DataGrid는 List<of a class object>에 바인딩됩니다.

나는 인치라는 것을 확신합니다. DataGrid Row를 파싱하여 필드의 값을 추출 할 수 있도록하거나, 반환 할 색상을 반환 할 수 있도록 해당 행 또는 열 자체에 바인딩 된 객체를 어떻게 파싱합니까? 또는 값이 주어진 DataGrid Cell의 속성을 선택적으로 변경하는 더 좋은 방법이 있습니까?

답변

1

셀 DataContext를이 행의 데이터 객체되어야이 결합 번째 변경해 : DataContext를 직접 결합

<Binding /> 

한다.

+0

절대적으로 자리 표시. 답장을 보내 주셔서 감사합니다. 그것은 완벽하게 작동했습니다. – Brindo

+0

도움이 되니 기쁩니다 :) –

관련 문제