WPF DataGrid-使用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" />

在我的行级视图模型中,IsInEvidencebool属性。如果我只保留此项,它会正常工作,但它会应用于所有单元格。

<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"/>

相关内容

最新更新