Лучший способ проверить несколько столбцов в WPF Grid / список?
-
05-10-2019 - |
Вопрос
У меня есть пользовательский контроль пользователя, который я написал в WPF для отображения некоторых данных. Я хочу показать этот usercontrol в списке, но я также хочу предоставить несколько заголовков столбцов (сопоставление некоторых свойств на COTROL пользователя), чтобы пользователи могли сортировать на свойствах, содержащихся в USERCONTROL.
Я не уверен, что лучший способ пойти об этом.
В настоящее время у меня есть список списков, отображающих эти элементы управления пользователями, но у списка нет заголовка, и я не могу понять, как поставить несколько заголовков на списке.
В идеале я бы хотел что-то вроде этого:
Header1 Header2 Header3 Header4
[UserControlThatSpansAllFourColumns]
Моя другая мысль должна была использовать DataGrid и как-то получить каждый элемент для проведения нескольких столбцов, но до сих пор я не могу понять это либо.
Если у кого-то есть советы, я бы приветствовал их!
Решение
Хорошо, это не в каком-либо случате «лучший способ», но я бы просто бросил это. Один из способов такого рода работает как то, что вам нужно, это использовать список с пользовательским элементом Contactainerstyle, который использует <ContentPresenter>
вместо по умолчанию <GridViewRowPresenter>
. Отказ Этот короткий XAML несколько демонстрирует это:
<ListView>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<ContentPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="Header1"/>
<GridViewColumn Header="Header2"/>
</GridView>
</ListView.View>
<Button>Item1</Button>
<Button>Item2</Button>
</ListView>
Здесь вы получаете заголовки столбцов, а элементы проводятся по всему списку. В этом решении, однако, рендеринг предметов вроде в мире собственного мира. Это на самом деле не связано с столбцами, определенными для ListView. Так что я предполагаю, что один способ сделать эту работу лучше, чтобы обеспечить свой собственный <RowPresenter>
Реализация, которая фактически учитывает GridViewColumns, определенные в родительском ListView.
Во всяком случае, надеюсь, это поможет как-то.