C# 使用转换器在DataGrid列中按值更改DataGrid行颜色
我创建了DataGrid并用数据库中的值填充它 现在我需要datagrid的颜色行,如下所示:C# 使用转换器在DataGrid列中按值更改DataGrid行颜色,c#,wpf,mvvm,converters,C#,Wpf,Mvvm,Converters,我创建了DataGrid并用数据库中的值填充它 现在我需要datagrid的颜色行,如下所示: 如果选中了行的复选框且列NANO_状态值为1,则行为绿色 PLC_状态为true 如果选中行的复选框且列的NANO_状态值为0,则行为黄色 如果选中了行的复选框且(列NANO_状态值2或列NANO_状态值1和PLC_状态为false或列NANO_状态值0和PLC_状态为true),则行为红色 如果行的复选框未选中或选中且(NANO_状态或PLC_状态)为空,则行为标准颜色 认为最好是使用转换器 已创建
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var isOnline = (bool)value;
if (isOnline)
{
return Brushes.Green;
}
else
return Brushes.Red;
}
无法计算属性如何绑定它以获得所需结果。
下面是我如何尝试的:
<Window.Resources>
<converters:StateToBrushConverter x:Key="StateToBrush"/>
</Window.Resources>
<Border Padding="5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Filter" Margin="5"/>
<TextBox Text="{Binding FilterText,UpdateSourceTrigger=PropertyChanged}" Width="200" Margin="5"/>
</StackPanel>
<DataGrid Grid.Row="1" AutoGenerateColumns="false" ItemsSource="{Binding Items}" >
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow }">
<Setter Property="Background" Value="{Binding ACTIVE, Converter={StaticResource StateToBrush}}"></Setter>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridCheckBoxColumn x:Name="DGC" Header="ACTIVE" Binding="{Binding ACTIVE}"/>
<DataGridTextColumn Header="DEVICE" Binding="{Binding DEVICE}"/>
<DataGridTextColumn Header="NANO IP" Binding="{Binding NANO_IP}"/>
<DataGridTextColumn Header="PLC IP" Binding="{Binding PLC_IP}"/>
<DataGridTextColumn Header="NANO STATUS" Binding="{Binding NANO_STATUS}"/>
<DataGridTextColumn Header="PLC STATUS" Binding="{Binding PLC_STATUS}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
请通过几个单元格状态帮助计算datagrid行的颜色。您只需使用multidata触发器即可完成此操作
有什么想法可以像上面描述的那样制作吗?