RowStyleSelector Not Called



我很难让RowStyleSelector与WPF DataGrid一起工作。

在我的资源中,我有

<loc:DetailsRowStyleSelector x:Key="detailsRowStyleSelector" AddRowStyle="{StaticResource newItemRowStyle}" StandardRowStyle="{StaticResource RowStyle}"/>

然后我的数据网格像这样使用:

<DataGrid ...
    EnableRowVirtualization="false"      
    VirtualizingStackPanel.VirtualizationMode="Standard"
    RowStyleSelector="{StaticResource detailsRowStyleSelector}"

调用了选择器的构造函数,但没有调用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

最可能的原因是在DataGrid上设置了RowStyleItemContainerStyle,可以是本地设置的,也可以是通过继承的样式设置的。

RowStyleSelector覆盖ItemContainerStyleSelector,其中包括文档中的以下语句:

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

相关内容

  • 没有找到相关文章