簡體   English   中英

使用轉換器按 DataGrid 列中的值更改 DataGrid 行顏色

[英]Change DataGrid row color by value in DataGrid column using converter

我創建了 DataGrid 並用數據庫中的值填充它。

現在我需要像這樣的數據網格的顏色行:

  1. 如果選中行的 CheckBox 且列 NANO_status 值為 1 且 PLC_status 為真,則該行為綠色。
  2. 如果選中行的 CheckBox 且列 NANO_status 值為 0,則行為黃色
  3. 如果選中行的 CheckBox 並且(列 NANO_status 值 2 或列 NANO_status 值 1 和 PLC_status false 或列 NANO_status 值 0 和 PLC_status 真),則行為紅色。
  4. 如果行的 CheckBox 未選中或選中且 (NANO_status 或 PLC_STATUS) 為空,則該行為標准顏色。

認為最好是使用轉換器。

已經創建的轉換器類:

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.RowStyle>
   <Style TargetType="DataGridRow">
        <Style.Triggers>
            <MultiDataTrigger >
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding Path=NANO_STATUS}" Value="True" />
                    <Condition Binding="{Binding Path=PLC_STATUS}" Value="True" />
                </MultiDataTrigger.Conditions>
                <Setter Property="Background" Value="Red" />
            </MultiDataTrigger>
        </Style.Triggers>
        <Setter Property="Background" Value="Green" />
    </Style>
</DataGrid.RowStyle>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM