代码之家  ›  专栏  ›  技术社区  ›  DaveDev

遇到特定值时,如何更改DataGrid行的颜色?

  •  2
  • DaveDev  · 技术社区  · 11 年前

    我有以下DataGrid:

    <DataGrid AutoGenerateColumns="False" Name="dgPanelLogs">
        <DataGrid.Columns>
            <DataGridTextColumn Header="ID" SortMemberPath="ID"
                x:Name="columnID" 
                Binding="{Binding Path=ID}"
                IsReadOnly="True"
                Width="50*"
                SortDirection="Descending" >
            </DataGridTextColumn>
    
            <DataGridTextColumn Header="Time" SortMemberPath="Time" 
                x:Name="columnTime" 
                Binding="{Binding Path= Time, StringFormat='{}{0:dd/MM/yyyy HH:mm:ss}'}"
                IsReadOnly="True"
                Width="140*"
                SortDirection="Descending">
            </DataGridTextColumn>
    
            <DataGridTextColumn Header="Event" SortMemberPath="Event"
                x:Name="columnMessage" 
                Binding="{Binding Path=Message}"
                IsReadOnly="True"
                Width="350*"
                SortDirection="Descending" >
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>
    

    我的新要求是,当遇到某个值时,将行更改为红色。具体来说,我必须用每一行的数据检索一个新的布尔值,如果这是真的,我需要将该行的文本设置为红色。

    最好的方法是什么?

    2 回复  |  直到 11 年前
        1
  •  1
  •   DaveDev    11 年前

    最好的方法是使用一种风格。

    <DataGrid.Resources>
        <Style TargetType="{x:Type DataGridRow}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Alarm}" Value="True">
                    <Setter Property="Foreground" Value="Red" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.Resources>
    

    我现在无法测试。我认为您必须在绑定上设置一个RelativeSource。

        2
  •  1
  •   Community kfsone    7 年前

    我认为以下帖子会对你有所帮助。

    link1 :堆栈溢出 问题与答案

    link2 :样式 和模板