셀에 들어있는 값을 기준으로 셀의 텍스트 색을 변경하고 싶습니다. 값 변환기를 사용하지만 변환 함수에 전달되는 개체의 형식이 DataRowView이며 나는 그 값을 기초로 한 번에 하나의 세포를 강조하기를 원하기 때문에 세포를 통과시키고 자한다. 희망은 그 말이 맞습니다.wpf DataGrid의 셀 값을 기준으로
감사합니다.
코드 만약 내가 데이터 그리드에 적용 할 스타일 :
<UserControl.Resources>
<local:MyBkColorConverter x:Key="bkColorCvrt"/>
<Style x:Key="GridStyle" TargetType="DataGrid">
<Setter Property="ItemsSource" Value="{Binding}" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="RowBackground" Value="Transparent" />
<Setter Property="HeadersVisibility" Value="None" />
<Setter Property="GridLinesVisibility" Value="None" />
<Setter Property="SelectionUnit" Value="Cell" />
<Setter Property="SelectionMode" Value="Single" />
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled" />
<Setter Property="CellStyle">
<Setter.Value>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground">
<Setter.Value>
<Binding Converter="{StaticResource bkColorCvrt}"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Black">
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
그리고 C#을 부분 :
공용 클래스 MyBkColorConverter : { # 지역 IValueConverter 회원
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//The type of value here is actually DataRowView
//here i would like to have a cell passed. is that possible to archive?
return Brushes.LightGray;
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
IValueConverter
내 표가 DataTable에 바인딩되어 있으므로 직접 열을 정의하지 않습니다. 이 코드는 어디에 붙여야합니까? – Anya
원본 행에 어떤 열이 있는지 알면 위와 같이 바인딩 할 수 있습니다. 예를 들어 직원에게 데이터 테이블이 있고 이름이 열이면 위의 사항이 정상적으로 작동합니다. – JSJ