gpt4 book ai didi

wpf - 如何阻止面板的子项超出设置的面板最大宽度的范围?

转载 作者:行者123 更新时间:2023-12-04 15:50:28 25 4
gpt4 key购买 nike

我在 Grids 中观察到了这个问题和 StackPanels ,它也可能适用于其他面板,请考虑以下 Xamls:

<Grid MaxWidth="200">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Label>Title:</Label>
<TextBox Grid.Column="1" Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>


<StackPanel MaxWidth="200">
<Label>Title:</Label>
<TextBox Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>

(编辑:我有几个这样的变量 block ,这就是为什么我不设置 MaxWidth 本身的 TextBox 的原因)

当然我想要的是在文本输入时 TextBox如果 parent 的 MaxWidth 不会变大已达到,但这不会发生,面板调整大小直到达到 MaxWidthTextBox射门出界。

如果第二个网格列没有定义宽度(默认为一颗星) TextBox不会增长,因为它只占用了所有可用空间,所以文本也会像我想要的那样滚动,但这个面板是 ToolBar 中的一个项目如果 ToolBar处于水平 ToolBarTray此设置会导致即时溢出。

关于如何让 TextBox 不超出范围的任何想法?

编辑:答案(可能)在正常情况下有效,但 ToolBar 不知何故弄乱了我的布局,一方面,无论出于何种原因,我的控件总是被插入 ToolBar 溢出区域,并且在网格单元内拉伸(stretch)之前的内容不再这样做。由于我最初的问题是如何防止这种内部溢出(而不是如何应对工具栏的特殊性),所以我就这样吧。

最佳答案

将第二个ColumnDefinition Width更改为*,将文本框Horizo​​ntalAlignment设置为stretch,将TextWrapping设置为Wrap以获得您想要的效果(参见下面的XAML)

<Grid x:Name="myGrid" MinWidth="200" MaxWidth="200">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label>Title:</Label>
<TextBox Margin="5" TextWrapping="Wrap" Grid.Column="1" Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Stretch"/>
</Grid>

编辑:您可以创建要应用于文本框的样式,这样您就不必为其他文本框再次设置相同的属性。

关于wpf - 如何阻止面板的子项超出设置的面板最大宽度的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com