Действительно ли возможно разработать DataGrid Инструментария WPF, таким образом, запись данных может охватить несколько строк. Снимок экрана в качестве примера от коммерческого управления.
Спасибо,
Ben
Это невозможно с набором инструментов DataGrid или GridView для ListView, нет.
Однако вам может повезти с вашей собственной реализацией, как я недавно обнаружил, вы можете использовать GridViewHeaderRowPresenter
( Ссылка MSDN ), установить Столбцы
в нужные столбцы: это даст вам строку заголовка.
Затем вы можете использовать GridViewRowPresenter
( Ссылка MSDN ), прикрепить его к той же коллекции Columns
и вуаля, ваши столбцы в строках и заголовке будут связаны (изменить размер заголовка, изменить столбцы).
См. Здесь хороший пример:
Чтобы получить эффект наложения , вы можете создать ListView
или ListBox
, и для каждого элемента вы должны вывести пару элементов управления GridViewRowPresenter
, уложенных вертикально, каждый из которых привязан к отдельной коллекции столбцов. Затем в своем собственном заголовке (прямо над элементом управления) вы должны сделать то же самое с парой элементов управления GridViewHeaderRowPresenter
.
Затем вы можете добавить любые другие биты, которые вам нужны, например текст / метку, которая есть на вашем примере снимка экрана.
Нет причин, по которым это не должно работать. Это не готовое решение, но возможно с чистым кодом, это не взлом, и у вас есть полный контроль над тем, как оно выглядит и работает! Добавление сортировки и т. Д. Тоже довольно просто, в MSDN есть пример для этого.
Надеюсь, что это поможет - если у вас возникнут дополнительные вопросы по этому поводу, пожалуйста, оставьте здесь комментарий!
Похоже, что элемент управления на этом снимке экрана создает иллюзию диапазона строк, разделяя ячейки в каждом столбце справа от изображения на несколько строк. Возможно, вы могли бы таким же образом добиться желаемого эффекта ряда строк.
<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>