2017-04-12 87 views
0

我有一个由TextColumns组成的特定数据网格,每个单元格的颜色都不相同。我将我的颜色基于某些数据,因此我已经适当地设置了单元格的背景颜色。由此产生的问题是,现在当我选择一行时,无法查看它是否被选中。当我选择行时,我不想调暗每个单元格的颜色,因为我有很多列。我只想调整所选行的不透明度,而不是关于单个单元格中的颜色。这是我曾尝试:如何更改整行的不透明度而不考虑颜色?

<DataGrid.Resources> 
    <Style TargetType="DataGridRow"> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Background"> 
        <SolidColorBrush Opacity="0.3"/> 
       </Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</DataGrid.Resources> 

但我得到的错误:Unexpected record in Baml stream. Trying to add to Setter which is not a collection or has a TypeConverter.有没有办法来acheive我预期的结果?

回答

2

应设置Value(注意<Setter.Value>元素)属性设置为SolidColorBrush

<Trigger Property="IsSelected" Value="True"> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <SolidColorBrush Opacity="0.3"/> 
     </Setter.Value> 
    </Setter> 
</Trigger> 

您可能还需要改变TargetTypeDataGridCell为背景,以应用到所选单元格。

+0

这确实阻止了我的应用程序崩溃,但我仍然没有在选定的行上获得任何透明度。 – Vrankela

+0

您是否按照我的建议更改了TargetType? – mm8

+0

是的,它没有区别。然而,它确实弄乱了我没有着色的其他一些栏目,所以我转回到 – Vrankela