簡體   English   中英

C#WPF DataGrid按值更改單元格顏色

[英]C# WPF DataGrid Change cells color by value

我是WPF的新手,並嘗試通過其值突出顯示Datagrid單元。 我已將項目列表加載到DataGrid,並且要標記所有錯誤的輸入值(表示為值“ 0”):

在此處輸入圖片說明

我做了一個簡單的示例,只是指導您如何完成它

XAML代碼

<DataGrid x:Name="dataGrid" IsEnabled="True" CanUserAddRows="False" AutoGenerateColumns="False" Width="275" HorizontalAlignment="Left">
    <DataGrid.Columns>
        <DataGridTextColumn Header="ID" Binding="{Binding ID}" Width="25"/>
        <DataGridTextColumn Header="Weight" Binding="{Binding Weight}" Width="25"/>
        <DataGridTextColumn Header="Quantity" Binding="{Binding Quantity}" Width="25"/>
        <DataGridTemplateColumn Header="Length" Width="25">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding Length, UpdateSourceTrigger=LostFocus}">
                        <TextBox.Style>
                            <Style TargetType="{x:Type TextBox}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding Path=Length}" Value="0">
                                        <Setter Property="BorderBrush" Value="Red"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </TextBox.Style>
                    </TextBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Header="Height" Binding="{Binding Height}" Width="25"/>
        <DataGridTextColumn Header="Width" Binding="{Binding Width}" Width="25"/>
        <DataGridTextColumn Header="X" Binding="{Binding X}" Width="25"/>
        <DataGridTextColumn Header="Y" Binding="{Binding Y}" Width="25"/>
        <DataGridTextColumn Header="Z" Binding="{Binding Z}" Width="25"/>
    </DataGrid.Columns>
</DataGrid>

背后的代碼

public partial class MainWindow : Window
{
    public ObservableCollection<Model> Source { get; set; }
    public MainWindow()
    {
        InitializeComponent();
        Source = new ObservableCollection<Model>
        {
            new Model {ID=1,Weight=3,Quantity=5,Length=11,Height=12,Width=0,X=1,Y=-1,Z=-1 },
            new Model {ID=2,Weight=21,Quantity=23,Length=0,Height=23,Width=11,X=-1,Y=-1,Z=-1 }
        };
        dataGrid.ItemsSource = Source;
    }
}

編輯只需在DataTemplateTextBox添加UpdateSourceTrigger

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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