Включение записи в несколько строк в DataGrid WPF Toolkit - PullRequest
5 голосов
/ 05 июля 2010

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

Спасибо
Ben

Ответы [ 2 ]

4 голосов
/ 05 июля 2010

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

<tk:DataGrid AutoGenerateColumns="False">
    <tk:DataGrid.Columns>
        <tk:DataGridTextColumn Header="ID" Binding="{Binding ID}" />
        <tk:DataGridTemplateColumn Header="Photo">
            <tk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Image Source="{Binding Photo}" />
                </DataTemplate>
            </tk:DataGridTemplateColumn.CellTemplate>
        </tk:DataGridTemplateColumn>
        <tk:DataGridTemplateColumn>
            <tk:DataGridTemplateColumn.Header>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition />
                        <RowDefinition />
                    </Grid.RowDefinitions>
                    <TextBlock Grid.Row="0">FirstName</TextBlock>
                    <TextBlock Grid.Row="1">LastName</TextBlock>
                </Grid>
            </tk:DataGridTemplateColumn.Header>
            <tk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                            <RowDefinition />
                        </Grid.RowDefinitions>
                        <TextBlock Grid.Row="0" Text="{Binding FirstName}" />
                        <TextBlock Grid.Row="1" Text="{Binding LastName}" />
                    </Grid>
                </DataTemplate>
            </tk:DataGridTemplateColumn.CellTemplate>
        </tk:DataGridTemplateColumn>
    </tk:DataGrid.Columns>
</tk:DataGrid>
4 голосов
/ 05 июля 2010

Это невозможно с инструментарием DataGrid или GridView для ListView, нет.

Однако вам может повезти с вашей собственной реализацией, как я недавно обнаружил, вы можете использовать GridViewHeaderRowPresenter ( ссылка на MSDN ), задайте для свойства Columns столбцы, которые вам нужны: это даст вам строку заголовка.

Затем вы можете использовать GridViewRowPresenter ( MSDNссылка ), прикрепите ее к той же коллекции Columns и вуаля, ваши столбцы в строках и заголовке будут связаны (измените размер заголовка, измените столбцы).

См. здесь хороший пример:

http://msdn.microsoft.com/en-us/library/ms752313.aspx

Чтобы получить эффект стека , вы можете создать ListView или ListBox, и длякаждый элемент, который вы бы вывели в виде вертикально сложенной пары элементов управления GridViewRowPresenter, каждый из которых связан с отдельной коллекцией столбцов.Затем в своем собственном настраиваемом заголовке (чуть выше элемента управления) вы сделаете то же самое с парой элементов управления GridViewHeaderRowPresenter.

Затем вы можете добавить любые другие биты, например, которые вы хотите, например,текст / метка, которые они имеют в вашем примере на скриншоте.

Нет причин, почему это не должно работать.Это не готовое решение, но возможно с чистым кодированием, это не хак, и у вас есть полный контроль над тем, как это выглядит и работает!Добавление сортировки и т. Д. Тоже довольно просто, у MSDN также есть пример для этого.

Надеюсь, это поможет - больше вопросов по этому вопросу, пожалуйста, добавьте комментарий здесь!

...