RowStyleSelector未调用

Ech*_*lon 5 .net datagrid styles workflow-foundation controltemplate

我很难让RowStyleSelector与WPF DataGrid一起使用.

在我的资源中,我有

<loc:DetailsRowStyleSelector x:Key="detailsRowStyleSelector" AddRowStyle="{StaticResource newItemRowStyle}" StandardRowStyle="{StaticResource RowStyle}"/>
Run Code Online (Sandbox Code Playgroud)

然后我的datagrid像这样使用它:

<DataGrid ...
    EnableRowVirtualization="false"      
    VirtualizingStackPanel.VirtualizationMode="Standard"
    RowStyleSelector="{StaticResource detailsRowStyleSelector}"
Run Code Online (Sandbox Code Playgroud)

调用选择器的构造函数,但SelectStyle方法不是,我的行看起来都一样.关于这一点的文档似乎很少,但这就是我的选择器的样子:

public class DetailsRowStyleSelector : StyleSelector {
    public Style AddRowStyle { get; set; }
    public Style StandardRowStyle { get; set; }

    public DetailsRowStyleSelector() {
        Console.WriteLine(""); // this is called
    }

    public override Style SelectStyle(object item, DependencyObject container) {
        // this is not called
Run Code Online (Sandbox Code Playgroud)

Ric*_*ing 5

最可能的原因是您在本地或通过继承的样式设置RowStyleItemContainerStyle设置DataGrid.

RowStyleSelector覆盖的ItemContainerStyleSelector,包括文档中的以下声明:

请注意,如果设置了ItemContainerStyle属性,则会忽略此属性.