如果值大于,则XAML数据网格设置rowStyle



我有一个包含3列的Datagrid。

现在我想有条件地更改行的高亮显示。类似:如果第2列中的值大于XX,则将行颜色更改为红色。

我已经尝试了一些东西,但没有成功:

<DataGrid Name="DataGrid1" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3" AlternatingRowBackground="LightGray"  ItemsSource="{Binding}" AutoGenerateColumns="False" FontSize="18" CanUserResizeColumns="False" CanUserReorderColumns="False" CanUserSortColumns="False" CanUserAddRows="False">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Steckzyklen}" Value="&lt; 20">
<Setter Property="Background" Value="#FFFF4848"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Steckplatz"  Binding="{Binding Name}" Width="200"/>
<DataGridTextColumn Header="Steckzyklen"  Binding="{Binding Steckzyklen}" Width="200"/>
<DataGridTextColumn Header="Austauschdatum"  Binding="{Binding Austauschdatum}" Width="200"/>
</DataGrid.Columns>
</DataGrid>

在这一行中:DataTrigger Binding=";{Binding Steckzyklen}";值="&lt 20〃;我试着用&lt但没有成功。

有人知道如何让它发挥作用吗?最好只更改XAML中的某些内容。

提前感谢!

您可以按如下方式更改样式:

创建一个新的转换器:

public class IsEqualOrLessThanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int intValue = (int)value;
int compareToValue = Int32.Parse(parameter.ToString() ?? string.Empty);
return intValue <= compareToValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

然后:

<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Steckzyklen, Converter={StaticResource IsEqualOrLessThanConverter}, ConverterParameter=20}" Value="True">    
<Setter Property="Foreground" Value="#FFFF4848"/>
<Setter Property="Background" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>

最新更新