WPF — шаблон данных для объектов в сетке данных

#wpf #datagrid #datatemplate

#wpf #сетка данных #datatemplate

Вопрос:

У меня возникли проблемы с поиском чего-либо по этому вопросу. Допустим, у меня есть список типов Car. Каждый объект car имеет ряд свойств (т.е. марку, модель, состояние, цену, владельца и т.д.). Я хочу отобразить список автомобилей в сетке данных, но я хочу контролировать, какие свойства отображать (например, я могу не захотеть отображать имя владельца в списке или я могу захотеть раскрасить строку автомобиля в зависимости от цены автомобиля).

Как я могу создать шаблон данных для достижения этой цели (нужен только базовый пример)?

Ответ №1:

Чтобы показывать и скрывать столбцы сетки данных, вам необходимо привязать видимость каждого столбца к логическому свойству, которое определяет, показывать этот столбец или нет. что касается цвета фона строки, вы можете добавить стиль строки сетки данных, который привязывает свойство фона строки к цене автомобиля, используя конвертер значений, который преобразует цену автомобиля в соответствующую цветовую кисть строки. Смотрите следующее доказательство концепции:

 <Window x:Class="MyProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:System="clr-namespace:System;assembly=mscorlib" 
    Title="MainWindow"
    Height="136" Width="525">
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
    <DataGrid.RowStyle>
        <Style TargetType="{x:Type DataGridRow}">
            <Setter Property="Background"
                    Value="{Binding SomeProperty,
                        Converter={StaticResource SomePropertyToBrushConverter}}"/>
        </Style>
    </DataGrid.RowStyle>

    <DataGrid.Columns>
        <DataGridTextColumn Header="Owner Name"
                            Visibility="{Binding IsOwnerNameVisible,
                                Converter={StaticResource BooleanToVisiblityConverter}}"/>
    </DataGrid.Columns>
</DataGrid>