4

好吧,我已经看到了这样做的代码:

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow">

        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="Black"/>
                <Setter Property="Foreground" Value="Green">
                </Setter>
            </Trigger>
        </Style.Triggers>

        <Setter Property="Background">                        
            <Setter.Value>
                <MultiBinding Converter="{StaticResource ucComponentesColorFilaMultiValueConverter}">
                    <Binding ElementName="dgdComponentes" Path="ItemsSource" />
                    <Binding ElementName="dgdComponentes" Path="SelectedItems" />
                    <Binding ElementName="CurrentItem" />
                </MultiBinding>
            </Setter.Value>
        </Setter>
    </Style>
</DataGrid.RowStyle>

确实代码是样式触发器,setter 属性是针对其他情况的,但是我添加了此代码会影响结果。

我想更改选定的行背景,默认情况下为蓝色,我想根据某些条件更改为其他颜色。例如,如果添加了一个寄存器,那么如果我选择该行,它将是绿色的,如果未选择该行,它将是浅绿色的。

我可以根据需要更改行的颜色,但是当我选择它时,总是蓝色的。

谢谢。

4

2 回答 2

15

你可以试试这样的东西也许......

       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
       <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
于 2012-07-27T19:17:23.917 回答
0

为此,您需要以编程方式指定行的颜色

<Setter Property="Background" Value="{Binding Path=BgColor}"/>  

BgColor属性添加到绑定到网格的对象。根据您的条件设置BgColor(即,如果对象已注册,则 BgColor 为“绿色”)

于 2012-07-27T19:06:55.687 回答