[英]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.