Стиль первой строки в сетке данных WPF

Я хотел бы изменить стиль первой строки (только) в сетке данных WPF, но не нашел, как это сделать. Я задавался вопросом о создании триггера, что-то вроде этого:

<Style TargetType="{x:Type dg:DataGridRow}">
    <Style.Triggers>
        <Trigger Property="SelectedIndex" Value="0">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
    </Style.Triggers>
</Style>

Но, конечно, это не работает, поскольку в DataGridRow нет свойства SelectedIndex. У меня также было несколько попыток сделать это в моем коде, но я не смог заставить его работать.

Кажется, что-то довольно простое, но мне это не удалось, поэтому любые советы будут высоко оценены.

Спасибо, Уилл


person WillH    schedule 30.09.2009    source источник


Ответы (2)


Возможно, вы сможете создать IValueConverter для возврата вашего стиля в виде объекта стиля или просто строкового представления (т. е. имени стиля). Затем вы можете привязать свойство стиля вашего DataGrid к конвертеру и передать базовый список элементов в качестве параметра для определения индекса текущего элемента?

Преобразователь может выглядеть примерно так...

public class StyleConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        Style style1 = App.Current.FindResource("RowStyle1") as Style;
        Style style2 = App.Current.FindResource("RowStyle2") as Style;

        List<object> items = parameter as List<object>;

        if (items[0] == value)
        {
            return style1;
        }

        return style2;
    }
}

Не уверен, что это сработает, я, вероятно, тоже не очень хорошо объяснил!

Теперь мне любопытно, я мог бы попробовать и посмотреть, смогу ли я заставить его работать!

person TabbyCool    schedule 07.12.2009
comment
Не знаю, давно это было, почти год не трогал WPF! - person TabbyCool; 08.08.2011

Я не знаю, как это сделать, но можно заморозить строку. Это соответствует вашим потребностям? Код по следующей ссылке может привести вас к решению о том, как получить доступ к определенной строке, чтобы вы могли применить к ней стиль.

http://blogs.msdn.com/vinsibal/archive/2008/10/31/wpf-datagrid-frozen-row-sample.aspx

person viggity    schedule 30.09.2009