WPF DataGrid가 있습니다. 비교할 필요가 있고 비교 결과에 따라 현재 열과 행에있는 두 셀의 셀 배경색을 설정하는 datetime 유형의 두 열이 있습니다. 각 DataGrid 행에 대해이 작업을 수행합니다. 이것을하기 위해서 저는 변환기를 사용합니다.WPF 변환기를 사용하여 DataGrid 셀 배경색을 변경하십시오.
<my:DataGridTextColumn Binding="{Binding Path=Date1, StringFormat=\{0:dd/MM/yyyy\}}" Header="Date">
<my:DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource CellDateColorConverter}">
<Binding Path="Date1"/>
<Binding Path="Date2"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</my:DataGridTextColumn.ElementStyle>
</my:DataGridTextColumn>
<my:DataGridTextColumn Binding="{Binding Path=Date2, StringFormat=\{0:dd/MM/yyyy\}}" Header="Date">
<my:DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource CellDateColorConverter}">
<Binding Path="Date1"/>
<Binding Path="Date2"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</my:DataGridTextColumn.ElementStyle>
</my:DataGridTextColumn>
컨버터 : 여기
public class CellDateColorConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values[0] is DateTime && values[1] is DateTime)
{
DateTime date1 = (DateTime)values[0];
DateTime date2= (DateTime)values[1];
if (date1.Date > date2.Date)
{
return Color.Brown;
}
}
return ????? // I need to return the default datagrid cell's background color. How to do this?
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException("CellDateColorConverter is a OneWay converter.");
}
}
나는 두 가지 문제가 있습니다
- 때 갈색으로 날짜 1> 날짜 2 셀 배경 색상이되지 않는 업데이트합니다.
- 날짜 1 < = date2 인 경우 기본 DataGrid 셀 배경색이 반환되어야하며이를 수행하는 방법을 모르겠습니다.
또한 DataGrid의 행 스타일을 정의했습니다. 행 스타일은 일부 조건에 따라 전체 행 배경색을 설정합니다. 그러나이 경우 이러한 조건은 충족되지 않지만 위의 열 스타일 (date1.Date> date2.Date)이 적용되므로 셀 배경이 갈색으로 채워 져야합니다.
행 스타일에 대한 조건이 충족되고 전체 배경이 예를 들어 주황색으로 설정된 경우이 열의 셀 열 스타일도 충족되어 갈색으로 칠할 필요가있는 경우이 게시물을 활용하여, 그럼 어느 것이 우세합니까? 행 스타일 또는 셀 스타일?
이것은 내가 원하는 것입니다. 일! 그리고 행 스타일과 셀 스타일이 만족 스럽다면, 어느 것이 우세합니까? 배경 색상 행 스타일에서 설정 배경 스타일 셀 스타일에 의해 설정된 색상? – user1624552
셀이 행의 맨 위에 있습니다. – mm8
큰 도움을 주셔서 다시 한 번 감사드립니다! – user1624552