我有 Datagrid 視圖,如下所示:
選定的一個是“狀態”,它有 3 種值(付費、未付費和其他)。我想根據狀態制作每行的背景,如果它是未付的顏色為紅色,如果它的已付顏色為綠色,在其他選項中為白色或無顏色。我從 mysql 資料庫接收資料。我的資料網格 XML 代碼:
<DataGrid HorizontalAlignment="Right" Height="178" FontWeight="Bold" Margin="0,193,63,0" VerticalAlignment="Top" Width="1087" x:Name="FactorGrid" ItemsSource="{Binding LoadDataBinding}" CanUserResizeRows="False" AutoGenerateColumns="False" CanUserAddRows="False" ContextMenuOpening="FactorGrid_ContextMenuOpening">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding id}" Header="????? ????????" Width="110" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding factorgroup}" Header="????" Width="100" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding factortype}" Header="???" Width="100" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding amount}" Header="????" Width="80" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding discount}" Header="?????" Width="80" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding extra}" Header="?????" Width="80" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding created_at, ConverterCulture=fa-IR, StringFormat=yyyy/MM/dd}" Header="????? ?????" Width="150" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding parent_id}" Header="????? ???????? ????" Width="150" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding status}" Header="?????" Width="150" IsReadOnly="True" />
</DataGrid.Columns>
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="?????? ???" Click="BtnSetPaid">
<MenuItem.Icon>
<Image Width="12" Height="12" Source="img/yes.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="?????? ????????" Click="BtnAddNewpay_Click">
<MenuItem.Icon>
<Image Width="12" Height="12" Source="img/9999.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="???" Click="BtnFactorDell">
<MenuItem.Icon>
<Image Width="12" Height="12" Source="img/delete.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="??? ????" Click="BtnFactorSplit">
<MenuItem.Icon>
<Image Width="12" Height="12" Source="img/ab-report.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="??????" Click="BtnFactorEdit">
<MenuItem.Icon>
<Image Width="12" Height="12" Source="img/Edit.png"/>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>
和我的 cs 代碼:
MySqlCommand cmd3 = new MySqlCommand("SELECT query ", conn);
MySqlDataAdapter adp2 = new MySqlDataAdapter(cmd3);
DataSet ds2 = new DataSet();
adp2.Fill(ds2, "LoadDataBinding");
FactorGrid.DataContext = ds2;
有什么辦法可以做我想做的事嗎?對不起,我的英語不好。
uj5u.com熱心網友回復:
查看資料觸發器。它們可以幫助您系結到一個值并根據不同的值做不同的事情。您通常會在 </DataGrid.Columns> 和 <DataGrid.ContextMenu> 之間添加它。更改顏色 RGB 以適應。
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="Paid">
<Setter Property="Background" Value="#447cff8b"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="Unpaid">
<Setter Property="Background" Value="#444eafff"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
uj5u.com熱心網友回復:
如果不滿足其他條件,則在您關于默認值的進一步問題(在評論中)之后,您只需要再添加一行:
<Setter Property="Background" Value="#4400ffff"></Setter>
這超出了這樣的樣式觸發器(第 3 行):
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="#4400ffff"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="Paid">
<Setter Property="Background" Value="#447cff8b"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="Unpaid">
<Setter Property="Background" Value="#444eafff"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
這樣,如果其中一個觸發器被擊中,它將從觸發器中獲取顏色,否則將使用默認值(上面的第 3 行)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/376967.html
