我有布尔属性SpecValue表示可以修改其他属性。
我找不到好的解决办法。
我使用下一个解决方案,但有一些错误。
<xcdg:Column Title="Value" FieldName="Value" Width="100" MaxWidth="100" MinWidth="100">
<xcdg:Column.CellEditor>
<xcdg:CellEditor>
<xcdg:CellEditor.EditTemplate>
<DataTemplate>
<TextBox x:Name="txtSpecVal" Text="{xcdgg:CellEditorBinding}" IsReadOnly="False"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type xcdg:Row}},Path=DataContext.SpecificValue}" Value="False">
<Setter TargetName="txtSpecVal" Property="IsReadOnly" Value="True"/>
<Setter TargetName="txtSpecVal" Property="BorderBrush" Value="Transparent"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</xcdg:CellEditor.EditTemplate>
</xcdg:CellEditor>
</xcdg:Column.CellEditor>
答案 0 :(得分:1)
这应该可行,这是一个以DataCell为目标的样式示例,只要它自己的值为false,就将“SpecificValue”单元格的enabled属性设置为false。它应该可以帮助你开始。
<Style.Triggers >
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource self},
Path=ParentColumn.FieldName}"
Value="SpecificValue"/>
<Condition Binding="{Binding
RelativeSource={RelativeSource self},
Path=ParentRow.DataContext.SpecificValue}"
Value="false"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Green" />
<Setter Property="IsEnabled" Value="False" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
您还可以参考以下博文中的类似详细示例: http://xceed.com/CS/blogs/techside/archive/2011/07/06/datacell-styling-vs-cellcontenttemplate.aspx