已关闭,此问题需要details or clarity,目前不接受回答。
**想要改进此问题吗?**通过editing this post添加详细信息并澄清问题。
上个月关门了。
Improve this question的
我有一个基本的网格,它被分成三部分。
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
字符串
下面是假设的UI外观x1c 0d1x
但是,当第一个文本框中添加了太多文本时,网格列会自动调整大小,如下所示:
我的问题是:为什么网格栏会根据文本框的大小自动调整大小?有没有一种方法可以创建一个完全分段的网格,而不会响应子框的宽度?
我知道在这种情况下,我可以使用列或文本框的MaxWidth来修复它。但是,这对我不起作用,因为网格父级可以是任何宽度。所以我没有办法设置一个常量MaxWidth。
编辑:对于那些要求清晰的人。我在第一次编辑时粘贴的代码足以重现这个问题。不需要更多的清晰度。
编辑:只有当网格放置在列表框中时才会出现这种情况。当网格不在列表框中时,网格列保持其宽度,而不管子内容如何。下面是一个视频,显示了有/没有列表框https://imgur.com/gO0e2w6之间的区别
下面是我的列表框:
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Hidden" x:Name="VariablesTable" SelectionMode="Extended" Grid.Row="1" ItemsSource="{x:Static vm:VariablesViewModel.Variables}" HorizontalContentAlignment="Stretch">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
<Setter Property="BorderThickness" Value="0 0 0 0" />
<Setter Property="BorderBrush" Value="{StaticResource BorderBrush}" />
<Setter Property="Margin" Value="0, 0, 0, 0"/>
<Setter Property="Padding" Value="0, 0, 0, 0"/>
<Setter Property="Height" Value="45"/>
<EventSetter Event="MouseMove" Handler="MouseMoveVariableEntry"/>
<EventSetter Event="DragEnter" Handler="DragEnterVariableEntry"/>
<EventSetter Event="DragOver" Handler="DragOverVariableEntry"/>
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="PreviewMouseLeftButtonDownVariableEntry"/>
<EventSetter Event="PreviewMouseLeftButtonUp" Handler="PreviewMouseLeftButtonDownVariableEntry"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate >
<DataTemplate>
<Border Background="#FF4A4A5E" BorderThickness="1" CornerRadius="8" Padding="10 5 10 5" Margin="0">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0"></TextBox>
<TextBox Grid.Column="1"></TextBox>
<TextBox Grid.Column="2"></TextBox>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
型
1条答案
按热度按时间smtd7mpg1#
这是因为所有项目都放在VirtualizingStackPanel中,但这个面板为子元素提供了无限的空间。
如果您限制ListBoxItem的大小,则此限制将传递给Border和Grid子级。
例如,可以通过在样式中绑定ListBoxItem大小来实现这一点。
字符串