ListView с кастомным DataTemplate
В общем, хочу сделать так, чтобы одна строчка имела 2 колонки: TextBox и CheckBox
Сделал я все вот так:
<ListView Grid.Row="5" Grid.Column="1" MinHeight="100" ItemsSource="{Binding SelectedColumns}" ScrollViewer.VerticalScrollBarVisibility="Visible" >
<ListView.ItemTemplate>
<DataTemplate>
<DockPanel >
<TextBox DockPanel.Dock="Left" IsReadOnly="True" IsReadOnlyCaretVisible="False" Width="200" Text="{Binding Item.ColumnName}"></TextBox>
<CheckBox DockPanel.Dock="Right" Width="20" IsChecked="{Binding Checked}"></CheckBox>
</DockPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
И получил вот такой результат:

Который не совсем красивый и хотелось бы 90% отвести первому элементу, а остальное CheckBox.
Как я это могу сделать? Вроде, явное задание ширины и высоты- это не совсем корректно, так как все должно само компоноваться.
Пробовал UniformGrid , но он все равномерно растягивает, чего я не хочу...
Ответы (1 шт):
Автор решения: VladD
→ Ссылка
Как-то у меня работает:
<ListView MinHeight="100" ItemsSource="{Binding SelectedColumns}"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
HorizontalContentAlignment="Stretch">
<ListView.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="9*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" IsReadOnly="True" IsReadOnlyCaretVisible="False"
Text="{Binding Item.ColumnName}"></TextBox>
<CheckBox Grid.Column="1" IsChecked="{Binding Checked}"></CheckBox>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
