簡體   English   中英

C#WPF DataGrid基於值更改行的字體顏色

[英]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;
            }
        }
    }
}

}

  1. 對於這種情況,您需要DataTriggers。
  2. 當樣式應用於所有單元格時,更改DataGridCell的前景將更改整個行的前景。

下面的樣式將使珍貴的訂單行顯示為紅色字體顏色,其余行的字體顏色為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.

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