Я пытаюсь настроить 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 поведение отличается.
Как мне изменить шаблон данных, чтобы он работал?
Спасибо!
По умолчанию HorizontalContentAlignment
для ListBox находится влево. Вам нужно установить его в Stretch, чтобы ListBoxItems занимал всю ширину.
Вот еще информация о стилях и шаблонах ListBox/ListBoxItem: http://msdn.microsoft.com/en-us/library/cc278062(VS.95).aspx