扩展到列表框宽度但不超过列表框宽度的列表框项
本文关键字:列表 不超过 扩展到 | 更新日期: 2023-09-27 18:09:08
我有一个列表框,我想占用我的窗口宽度,并且列表框项将拉伸到列表框的大小。
每个列表框项将是一个数据模板,其宽度约为150用于信息,其余大小为用于描述的文本框。我希望描述文本框拉伸到剩余的可用大小。这里是一个示例xaml我认为它会创建这样的布局:
<Window x:Class="test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListBox Margin="20,20,20,20" ItemsSource="{Binding Path=List}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment"
Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="AliceBlue"
BorderThickness="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Width="20"
Content="Test" />
<ComboBox Width="130" />
<TextBox Grid.Column="1"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch" />
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
但是,当我在文本框中键入文本宽度超过列表框的宽度时,列表框项继续增长并且显示水平滚动条。
我想要实现的是文本框的最大宽度,只是上升到列表框,而不是变宽。有人知道我怎么实现这个布局吗?
尝试将ScrollViewer.HorizontalScrollBarVisibility="Disabled"
添加到ListBox
,它对我有效。
问题是您的Listbox包含一个滚动查看器,这意味着它的子节点可以有任何他们想要的大小,滚动查看器将负责。您的ColumnDefinition实际上是说"使用我们拥有的所有无限空间"。我想到的一个解决方案是将网格宽度绑定到ListBox ActualWidth
Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=ActualWidth}"
但Dmitrys的解决方案可能更好。