CellStyle基于WPF中的RowStyle
我有一个在XAML
表示的WPF
DataGrid
。 我正在为我的网格TableView
使用RowStyle
,但还需要为特定单元格设置一些属性。 我需要这些单元格具有行样式的属性,并在单元格样式的顶部应用额外的属性。
我需要的是这样的东西,虽然这不起作用,因为它说:
目标类型’CellContentPresenter’不能转换为基本类型’GridRowContent’
... ...
我也尝试过不为MyCellStyle
指定BasedOn
属性,但这也不起作用。
我像这样使用MyCellStyle
:
和TableView
上的MyGridRowStyle
一样:
RowStyle="{StaticResource MyGridRowStyle}"
如何使单元格样式只更改MyCellStyle
指定的属性并使用MyGridRowStyle
指定的值作为其他属性?
基于普通的WPF DataGrid你可以尝试这个并将它扩展为dxg
,类DataGridCell
是从ContentControl
派生的(来自Content
的子dxg
)。 DataGridRow
类派生自Control
。
现在你可以尝试以下方法:
摘要:为BaseStyle
使用Row
和Column
类的基类型,并将其用作BasedOn
。 对于dxg
您可以自己扩展它…
您不能将GridContentPresenter样式基于GridRowContent样式。 这是两种完全不同的类型,只是因为它们可能恰好具有一些具有相同名称的属性,这些属性仍然完全不同且独立属性彼此无关。
您可以做的最好的事情是将公共值定义为单独的资源,并在两种样式中使用这些资源,例如:
25 Red
但是你仍然需要在两种样式中定义所有的setter 。
我对这个问题的理解:单元格样式的值应该根据它所在行的样式中的值来改变。
触发价值
这是一个简单的工作示例(通过将DataGridRow Background更改为Red来测试它,您会注意到单元格的前景变为Blue):
您可以执行类似的绑定,直接将CellStyle的属性设置为它所在行的属性值。
相对直接绑定到属性
说明
RelativeBinding的工作原因是DataGridCells是DataGridRows的最终子节点,可以在DataGrid的可视化树的屏幕截图中看到: