Я хотел бы динамически устанавливать цвет фона или стиль DataGridCell на основе цветов в базе данных только для этой конкретной ячейки. Как мне это сделать? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть DataTable с именем и цветом человека в ARGB.

Мне удалось создать кисти и / или стили из цвета по отдельности, но у меня возникли проблемы с привязкой cellStyle DataGridTextColumn WindowsToolkit DataGrid впроект UWP.

введите описание изображения здесь

База данных привязана как ItemsSource к DataGrid и отображается правильно, но не может передать цвет / кисть / стиль в cellStyle.

Как мне этого добиться?

    <Custom:DataGrid x:Name="DataGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" HorizontalAlignment="Left" FrozenColumnCount="1" Margin="0,0,0,0" Width="1480" CanUserSortColumns="True" Grid.Row="1">
        <Custom:DataGrid.Columns>
            <Custom:DataGridTextColumn Header="ProvNum" Binding="{Binding [0]}" Tag="ProvNum" Visibility="Collapsed" />
            <Custom:DataGridTextColumn Header="ProvStyle" Binding="{Binding [1]}" Tag="ProvStyle" />
            <Custom:DataGridTextColumn Header="Provider" Binding="{Binding [2]}" Tag="Provider" />
            <Custom:DataGridTextColumn Header="Production" Binding="{Binding [3], Converter={StaticResource StringFormatConverter}, ConverterParameter='{}{0:C1}'}" Tag="Production" />
            <Custom:DataGridTextColumn Header="Adjustments" Binding="{Binding [4], Converter={StaticResource StringFormatConverter}, ConverterParameter='{}{0:C1}'}" Tag="Adjustments" />
            <Custom:DataGridTextColumn Header="Writeoffs" Binding="{Binding [5], Converter={StaticResource StringFormatConverter}, ConverterParameter='{}{0:C1}'}" Tag="Writeoffs" />
            <Custom:DataGridTextColumn Header="Income" Binding="{Binding [6], Converter={StaticResource StringFormatConverter}, ConverterParameter='{}{0:C1}'}" Tag="Income" />
            <Custom:DataGridTextColumn Header="Net Production" Binding="{Binding [7], Converter={StaticResource StringFormatConverter}, ConverterParameter='{}{0:C1}'}" CellStyle="{StaticResource ProductionColumn}" Tag="NetProduction" />
        </Custom:DataGrid.Columns>
    </Custom:DataGrid>

1 Ответ

0 голосов
/ 31 октября 2019

Используете ли вы DataGrid из набора инструментов сообщества? Если это так, кажется, что DataGrid не может напрямую это сделать. Но вы можете использовать тип DataGridTemplateColumn, он позволяет создавать собственные типы столбцов, указав шаблоны ячеек, используемые для отображения значений. Установите свойство CellTemplate, чтобы указать содержимое ячеек, и вы можете связать фон со следующей границей.

<controls:DataGrid.Columns>
    //just one column
    <controls:DataGridTemplateColumn Header="Name">
        <controls:DataGridTemplateColumn.CellTemplate>
            <DataTemplate x:DataType="local:Person">
                <Border Background="{x:Bind CellForColorInDataTable}">
                    <TextBlock Text="{x:Bind Name}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Border>
            </DataTemplate>
        </controls:DataGridTemplateColumn.CellTemplate>
    </controls:DataGridTemplateColumn>
    // another colunm
    <controls:DataGridTextColumn Header="ProvNum" ....../>
    ......            
</controls:DataGrid.Columns>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...