Отображение элементов в элементе управления элементами в двух столбцах (WPF)
-
11-09-2019 - |
Вопрос
У меня есть элемент управления элементами, привязанный к коллекции объектов.У объекта есть два свойства (имя, значение), которые я показываю в текстовом блоке и текстовом поле соответственно.Список довольно длинный, и я хотел бы разделить его на две колонки.Итак, мой вопрос: можно ли каким-либо образом заставить элемент управления Items отображать элементы в двух столбцах?
P.S:Коллекция заполняется во время выполнения, и я не знаю, сколько элементов мне придется показать!
Решение
Я обычно помещаю элементы в WrapPanel, а затем устанавливаю ширину панели в 2 раза больше ширины элемента.Это дает мне хорошие столбцы с произвольным количеством элементов.Если ширина ваших элементов различается, я помещаю каждый элемент в отдельную сетку или StackPanel фиксированной ширины.
Другие советы
Используйте ListBox и укажите DataTemplate, в который вы поместите TextBlock и TextBox.Используйте привязки, чтобы заполнить их оба.Видеть http://msdn.microsoft.com/en-us/library/ms742521.aspx дополнительные примеры.
<ListBox x:Name="TheListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Key" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" />
<TextBox Grid.Column="1" Text="{Binding Value }" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
TheListBox.ItemsSource = CollectionOfObjects;