首頁 >後端開發 >C++ >如何根據值變更 WPF DataGrid 儲存格顏色?

如何根據值變更 WPF DataGrid 儲存格顏色?

Barbara Streisand
Barbara Streisand原創
2025-01-23 09:22:11325瀏覽

How to Change WPF DataGrid Cell Colors Based on Values?

根據資料值變更WPF DataGrid儲存格顏色

使用WPF DataGrid控制項時,通常需要根據單元格的資料值來自訂單元格的視覺外觀。雖然使用DataGrid.CellStyle似乎是一種簡單的方法,但它可能會無意中將樣式應用於整個行而不是單一單元格。讓我們探索實現單元格特定著色的替代方法。

基於列的樣式

要將樣式套用於列中的特定單元格,請考慮自訂每個DataGridTextColumn的ElementStyle屬性。例如,若要變更其中Name為「John」的儲存格的背景顏色,請使用下列程式碼:

<code class="language-xml"><DataGridTextColumn Binding="{Binding Name}">
    <DataGridTextColumn.ElementStyle>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <Trigger Property="Text" Value="John">
                    <Setter Property="Background" Value="LightGreen" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </DataGridTextColumn.ElementStyle>
</DataGridTextColumn></code>

值轉換器

對於更複雜的著色邏輯,您可以使用值轉換器。以下是將Name值對應到對應畫刷的範例:

<code class="language-csharp">public class NameToBrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string input = (string)value;
        switch (input)
        {
            case "John":
                return Brushes.LightGreen;
            default:
                return DependencyProperty.UnsetValue;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}</code>

使用方法:

<code class="language-xml"><Window.Resources>
    <local:NameToBrushConverter x:Key="NameToBrushConverter" />
</Window.Resources>
...
<DataGridTextColumn Binding="{Binding Name}">
    <DataGridTextColumn.ElementStyle>
        <Setter Property="Background" Value="{Binding Name, Converter={StaticResource NameToBrushConverter}}" />
    </DataGridTextColumn.ElementStyle>
</DataGridTextColumn></code>

屬性綁定

或者,您可以直接將儲存格的Background屬性綁定到傳回所需畫刷的屬性。在這種方法中,請確保每當顏色依賴項變更時都會引發屬性變更通知。

以上是如何根據值變更 WPF DataGrid 儲存格顏色?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn