【问题标题】:WPF DataGrid row's color multibound (also) to own IsSelected property?WPF DataGrid 行的颜色多绑定(也)拥有 IsSelected 属性?
【发布时间】:2020-08-05 07:16:16
【问题描述】:

我有一个 DataGrid,其中 ItemsSource 连接到 SQL 表。我需要对行背景进行颜色编码。所以我为 DataRow 设置了一个样式:

     <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Setter Property="Background">
                        <Setter.Value>
                            <MultiBinding Converter="{StaticResource rowColor}">
// here I'm passing DataRowView that gives me access to row data - this is working well
                                <Binding /> 
// below part is not working (compiling, but passing nothing)
                                <Binding Source="{RelativeSource Mode=Self}" Path="IsSelected" /> 
                            </MultiBinding>
                        </Setter.Value>
                    </Setter>
                </Style>
            </DataGrid.RowStyle>

事情是我需要根据行的数据设置许多颜色。 IE。绿色、黄色、红色...用于即时视觉识别每个项目的状态。这部分工作完美。

但是当每一行处于选中状态时,我还需要对每一行进行颜色编码。否则,一旦被选中,它们都将具有无用的默认 RoyalBlue 背景。所以对于选定的行,我需要设置 DarkGreen、DarkYellow、DarkRed... 等。因此,MultiBinding 和我尝试将自己的 IsSelected 属性传递给转换器。那是行不通的。无论我尝试了什么(我尝试了很多,还有其他属性),在我的 Convert() 函数中,values[0] 都可以(DataRowView),但 values[1] 始终是 DependencyObject.Unset。

这样做的正确方法是什么?

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    尝试设置RelativeSource 属性而不是Source

    <Binding RelativeSource="{RelativeSource Self}" Path="IsSelected" />
    

    【讨论】:

    • 谢谢。在职的。好吧 - 几乎。为所选行设置颜色根本不起作用,但它让我期待并且它对于单元格是可行的(使用相同的绑定)。
    • @Vojtek:如果您的原始问题已经解决,请记住接受答案。
    猜你喜欢
    • 2013-02-01
    • 2022-07-09
    • 2011-04-06
    • 2021-11-10
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    相关资源
    最近更新 更多