Разделить ширину равномерно между двумя элементами управления, которые составляют элемент списка?

2

Я пытаюсь настроить ListBox так, чтобы каждый элемент имел текстовый блок и поле со списком, равномерно распределенное по ширине списка, но я не могу найти волшебную комбинацию свойств ColumnDefinition для этого. Вот мой DataTemplate для элемента списка. Во всяком случае, я его очистил, так как это было неправильно.

        <DataTemplate x:Key="MyDataTemplate">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding XPath=text()}"/>
                <ComboBox Grid.Column="1" SelectedIndex="0" ItemsSource="{Binding Source={StaticResource Names}, XPath=Name}"></ComboBox>
            </Grid>
        </DataTemplate>

Я проверил простое приложение с сеткой в ​​окне. Просто указывая два ColumnDefinitions, они автоматически занимают половину ширины, что приятно, но при выполнении этого же в таблице данных listboxitem поведение отличается.

Как мне изменить шаблон данных, чтобы он работал?

Спасибо!

Теги:
wpf
listbox
datatemplate
listboxitem

1 ответ

6
Лучший ответ

По умолчанию HorizontalContentAlignment для ListBox находится влево. Вам нужно установить его в Stretch, чтобы ListBoxItems занимал всю ширину.

Вот еще информация о стилях и шаблонах ListBox/ListBoxItem: http://msdn.microsoft.com/en-us/library/cc278062(VS.95).aspx

  • 1
    это сделало трюк
  • 0
    У меня это сработало :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню