[英]WPF DataGrid - Apply style to whichever column is displayed as first with DataTrigger
在DataGrid
中,我需要根据在我的数据上下文中实现的特定条件应用样式。 但它只能应用于第一列的单元格。
由于允许用户重新排序列,我不知道哪个是第一个提前。 所以我尝试在CellStyle
级别实现它,条件是DisplayIndex
:
<Condition Binding="{Binding Column.DisplayIndex, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridCell}}}" Value="0" />
我将它放入 MultiDataTrigger 中,并带有数据条件,即:
<Condition Binding="{Binding IsInEvidence}" Value="False" />
IsInEvidence
是我的行级视图 model 中的bool
属性。 如果我只留下它,它可以正常工作,但它会应用于所有单元格。
<DataGrid Items={Binding Items}/>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsInEvidence}" Value="False" />
<Condition Binding="{Binding Column.DisplayIndex, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridCell}}}" Value="0" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Yellow"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
<!-- Column defintions and so on -->
</DataGrid>
将您的Condition
绑定更改为使用RelativeSource={RelativeSource Self}
,然后它就可以工作了。
<Condition Binding="{Binding Column.DisplayIndex, RelativeSource={RelativeSource Self}}" Value="0"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.