Показывать элементы в элементе управления в двух столбцах (WPF) - PullRequest
6 голосов
/ 20 сентября 2009

У меня есть элемент управления, связанный с коллекцией объектов. У объекта есть два свойства (имя, значение), которые я отображаю в текстовом блоке и текстовом поле соответственно. Список довольно длинный, и я хотел бы показать его в двух столбцах. Итак, мой вопрос: есть ли способ заставить Itemscontrol показывать его элементы в двух столбцах?

P.S: Коллекция заполняется во время выполнения, и я не знаю, сколько предметов мне нужно будет показать!

Ответы [ 2 ]

11 голосов
/ 20 сентября 2009

Используйте 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;
6 голосов
/ 20 сентября 2009

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

...