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使用RowColumn类的基类型,并将其用作BasedOn 。 对于dxg您可以自己扩展它…

您不能将GridContentPresenter样式基于GridRowContent样式。 这是两种完全不同的类型,只是因为它们可能恰好具有一些具有相同名称的属性,这些属性仍然完全不同且独立属性彼此无关。

您可以做的最好的事情是将公共定义为单独的资源,并在两种样式中使用这些资源,例如:

  25 Red    

但是你仍然需要在两种样式中定义所有的setter

我对这个问题的理解:单元格样式的值应该根据它所在行的样式中的值来改变。

触发价值

这是一个简单的工作示例(通过将DataGridRow Background更改为Red来测试它,您会注意到单元格的前景变为Blue):

          

您可以执行类似的绑定,直接将CellStyle的属性设置为它所在行的属性值。

相对直接绑定到属性

         

说明

RelativeBinding的工作原因是DataGridCells是DataGridRows的最终子节点,可以在DataGrid的可视化树的屏幕截图中看到:

DataGridCells是DataGridRows的最终子项