Изменять фон ячейки WPF DataGrid в зависимости от значения при заполнении датабилем как IListSource - PullRequest
2 голосов
/ 09 декабря 2011

Я видел похожие сообщения, такие как this

Однако они, похоже, не отвечают на мой вопрос.У меня есть сетка данных XAML в приложении WPF

<DataGrid AutoGenerateColumns="True" Grid.Row="1" AlternationCount="2" HeadersVisibility="Column" Name="dgSkillsMatrix" Margin="0,0,0,1" HorizontalGridLinesBrush="White" VerticalGridLinesBrush="White" AlternatingRowBackground="#FFD0D0EB" RowBackground="#FFECECF5" FontSize="12">
    <DataGrid.CellStyle>
        <Style TargetType="{x:Type DataGridCell}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Value}" Value="1">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Content}" Value="2">
                    <Setter Property="Background" Value="Green"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Text}" Value="1">
                    <Setter Property="Background" Value="Black"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Name}" Value="Temp">
                    <Setter Property="Background" Value="Black"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.CellStyle>
</DataGrid>

Как вы можете видеть, я пробовал несколько разных способов "инициировать" изменение цвета, но ни один из них не срабатывает.Если я добавлю общие настройки в триггеры, это изменит цвет.

Я думаю, что проблема в том, что я связываюсь с сеткой данных из динамического набора данных, который может меняться день ото дня, поэтому я использую таблицу данных (ниже), так как существует разное количествозначит, я не могу использовать объекты для каждой строки, так как никогда не знаю, когда изменится число столбцов / свойств.

this.dgSkillsMatrix.ItemsSource = (dt as IListSource).GetList();

Мне просто нужно знать, как запустить триггер для изменения свойств в зависимости от этого.значение ячейки, созданной из источника данных для списков.

1 Ответ

1 голос
/ 09 декабря 2011

Эта ссылка предлагает какую-либо помощь?Похоже, что привязка к DataTable может вызвать некоторые проблемы для окрашивания ячеек. Вы пытались реализовать преобразователь данных и MultiDataBinding, как предлагает статья?

...