[英]C# WPF DataGrid Change FontColour of Row Based on Value
我正在从数据库中检索数据,然后将内容放入WPF DataGrid中;
命名空间ContractsExcel {公共部分类UserSelection:页面{public UserSelection(){InitializeComponent(); dataGrid.CanUserAddRows = false; 字符串用户名= Environment.UserName; userImage.Source =新的BitmapImage(新的Uri(@“ C:\\ Users \\ DanD \\ Desktop \\” +用户名+“。jpg”)); }
private void FillDataGrid(object sender, RoutedEventArgs e)
{
string constr = ConfigurationManager.ConnectionStrings["dbfString"].ConnectionString;
using (OleDbConnection dbfCon = new OleDbConnection(constr))
{
try
{
dbfCon.Open();
DataTable dTable = new DataTable();
string dbfQuery = "SELECT em_pplid, em_name, em_netname FROM employs WHERE em_netname NOT LIKE ''";
OleDbCommand MyQuery = new OleDbCommand(dbfQuery, dbfCon);
OleDbDataAdapter DA = new OleDbDataAdapter(MyQuery);
DA.Fill(dTable);
dataGrid.ItemsSource = dTable.AsDataView();
}
catch (OleDbException)
{
throw;
}
}
}
}
}
我想做的是根据行单元格的内容更改整个行的字体颜色,例如,如果珍惜顺序,请将行的字体颜色更改为红色。
尽管已经存在有关此主题的多个问题,但我找不到与此相关的任何特定内容。 是否需要通过XAML或C#完成此操作,以及如何实现此功能?
使用XAML更新代码;
<DataGrid x:Name="dataGrid" Margin="0,0,10,0" Grid.ColumnSpan="3" ColumnWidth="*" FontSize="18.667">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding em_netname}" Value='Chris'>
<Setter Property="Foreground" Value="Red"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
在C#中填充DataContext的代码;
命名空间ContractsExcel {公共部分类UserSelection:页面{public UserSelection(){InitializeComponent(); dataGrid.CanUserAddRows = false; 字符串用户名= Environment.UserName; userImage.Source =新的BitmapImage(新的Uri(@“ C:\\ Users \\ DanD \\ Desktop \\” +用户名+“。jpg”)); }
private void FillDataGrid(object sender, RoutedEventArgs e)
{
string constr = ConfigurationManager.ConnectionStrings["dbfString"].ConnectionString;
using (OleDbConnection dbfCon = new OleDbConnection(constr))
{
try
{
dbfCon.Open();
DataTable dTable = new DataTable();
string dbfQuery = "SELECT em_pplid, em_name, em_netname FROM employs WHERE em_netname NOT LIKE ''";
OleDbCommand MyQuery = new OleDbCommand(dbfQuery, dbfCon);
OleDbDataAdapter DA = new OleDbDataAdapter(MyQuery);
DA.Fill(dTable);
dataGrid.ItemsSource = dTable.AsDataView();
}
catch (OleDbException)
{
throw;
}
}
}
}
}
下面的样式将使珍贵的订单行显示为红色字体颜色,其余行的字体颜色为Aqua。
<Style TargetType="DataGridCell">
<Setter Property="Foreground" Value="Aqua"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Order}" Value="Cherished">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
另一种方法是使用
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Foreground" Value="Aqua"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Title}" Value="Pepsi">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
使用自定义颜色为行编写数据网格的数据模板。 您是将数据表直接分配给网格。 这样就无法根据数据更改颜色。 否则,您必须为颜色编写模型类,然后只能根据数据设置颜色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.