RowStyleSelector не вызывается - PullRequest
5 голосов
/ 08 марта 2012

Мне трудно заставить 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

1 Ответ

5 голосов
/ 11 декабря 2012

Наиболее вероятная причина в том, что у вас либо RowStyle, либо ItemContainerStyle установлено на DataGrid, либо локально, либо через унаследованный стиль.

RowStyleSelector переопределяет ItemContainerStyleSelector, что включает в себя следующее утверждение в документации:

Обратите внимание, что это свойство игнорируется, если установлено свойство ItemContainerStyle .

...