Как применить DataTemplate в динамической сетке? - PullRequest
1 голос
/ 08 сентября 2010

У меня есть Сетка.Столбцы сетки автоматически генерируются во время выполнения на основе выбора пользователя.

Мне нужно, чтобы ячейки в сетке были красными, если содержимое является отрицательным числом.

Я создал DataTemplateSelector.DataTemplateSelector get правильно вызывается и возвращает мой шаблон, если ячейка отрицательна.

Поскольку мои столбцы генерируются автоматически, я не могу просто поместить правильное поле в привязку в моем шаблоне.

            <DataTemplate x:Key="MontantNegatifTemplate">                    
                <TextBlock Foreground="Red" Text="{Binding}" />
            </DataTemplate>

Если я сделаю такой шаблон, то текст - это имя объекта, к которому привязана сетка.

Если я сделаю что-то вроде:

            <DataTemplate x:Key="MontantNegatifTemplate">                    
                <TextBlock Foreground="Red" />
            </DataTemplate>

Ячейка пуста, так как кажется, что текстовый блок перезаписывает стандартную автоматически генерируемую ячейку.

Есть ли способ заставить эту работу?Должен ли я использовать другой подход?

1 Ответ

0 голосов
/ 08 сентября 2010

Я наконец нашел ответ на свой вопрос.

Мне нужно было использовать StyleSelector, а не DataTemplateSelector.

Точно так же мне нужно было определить стиль вместо DataTemplate в моих ресурсах Grid.

<style:NegativeStyleSelector x:Key="NegativeStyleSelector">
                    <style:NegativeStyleSelector.NegativeStyle>
                        <Style TargetType="GridViewCell">
                            <Setter Property="Foreground" Value="Red"/>
                        </Style>
                    </style:NegativeStyleSelector.NegativeStyle>
                </style:NegativeStyleSelector>
...