[英]WPF DataGrid binding to current object property from DataGridCell style
[英]DataGridCell style based on DataGrid property
我想向基於該DataGrid
屬性的自定義DataGrid
的DataGridCell
添加樣式。 例如,我想要一個名為VisualizeReadOnlyCells的DependencyProperty,並且如果該屬性設置為True,則我希望使用灰色背景繪制ReadOnly的DataGridCell
。 和其他類似的東西。 作為一種解決方法,我為DataGridCell
創建了兩種不同的樣式,並將這些樣式分配給DataGrid
樣式定義中DataGrid
的CellStyle
屬性。 但是隨着更多的屬性,此類樣式的數量將會增加,並且代碼將非常難以管理。
我當前的解決方案是:
<Style x:Key="DataGridCellNoVisualize" TargetType="DataGridCell">
- style definition
</Style>
<Style x:Key="DataGridCellVisualize" TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsReadOnly" Value="True">
<Setter Property="Background" Value="Gray"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="DataGridStyle" TargetType="MyCustomDataGrid">
<Setter Property="CellStyle" Value="{StaticResource DataGridCellNoVisualize"/>
<Style.Triggers>
<Trigger Property="VisualizeReadOnlyCells" Value="True">
<Setter Property="CellStyle" Value="{Static Resource DataGridCellVisualize"/>
</Trigger>
</Style.Triggers>
</Style>
我想得到的是這樣的:
<Style x:Key="DataGridCellUniversalStyle" TargetType="DataGridCell">
- style definition
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsReadOnly" Value="True"/>
<Condition Property="MyParentDataGrid.VisualizeReadOnlyCells" Value="True"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="Gray"/>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
如果我正確理解了您的問題,則可以使用MultiDataTrigger
並綁定到DataGridCell
和父DataGrid
:
<Style x:Key="DataGridCellUniversalStyle" TargetType="DataGridCell">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsReadOnly, RelativeSource={RelativeSource Self}}" Value="True"/>
<Condition Binding="{Binding VisualizeReadOnlyCells, RelativeSource={RelativeSource AncestorType=local:MyCustomDataGrid}}" Value="True"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Background" Value="Gray"/>
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.