[英]WPF Change datagrid cell background color using a converter
我有一個 WPF 數據網格。 我需要比較兩列日期時間類型,並根據比較結果,為當前列和行中的兩個單元格設置單元格背景顏色。 我為每個數據網格行執行此操作。 為了做到這一點,我使用了一個轉換器。
<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.");
}
}
這里我有兩個問題:
我還為數據網格定義了行樣式。 行樣式根據某些條件設置整行背景顏色。 但在這種情況下,這些條件不滿足,但上面的列樣式(date1.Date > date2.Date)滿足,所以單元格背景應該塗成棕色。
利用這個帖子,如果滿足行樣式的條件,並且整個背景設置為例如橙色,如果單元格列樣式(在此帖子中)也滿足並且需要繪制為棕色,那么哪個占上風? 行樣式還是單元格樣式?
返回Brush
:
if (date1.Date > date2.Date) { return System.Windows.Media.Brushes.Brown; }
返回System.Windows.Data.Binding.DoNothing
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.