Охват записи по нескольким строкам в DataGrid инструментария WPF

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

Спасибо,
Ben

5
задан Ben Gribaudo 5 July 2010 в 17:35
поделиться

2 ответа

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

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

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

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

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

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

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

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

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

4
ответ дан 14 December 2019 в 04:29
поделиться

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

<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
ответ дан 14 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: