我有一個 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="< 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}" Value="< 20" 我嘗試使用 < 但沒有成功。
有人知道如何使它作業嗎?最好只更改 XAML 中的某些內容。
提前致謝!
uj5u.com熱心網友回復:
您可以按如下方式更改樣式:
創建一個新的轉換器:
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>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/461941.html
