C# 如何将WrapPanel中元素的最大宽度限制为WrapPanel的宽度?
我有一个C# 如何将WrapPanel中元素的最大宽度限制为WrapPanel的宽度?,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我有一个WrapPanel,我在其中放置了一些网格s,我在其中放置了一些文本框es,类似于以下内容: <WrapPanel Orientation="Horizontal"> <!-- Other label / text box pair grids --> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /
WrapPanel
,我在其中放置了一些网格
s,我在其中放置了一些文本框
es,类似于以下内容:
<WrapPanel Orientation="Horizontal">
<!-- Other label / text box pair grids -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="FancyLabel" Margin="1,1,1,0"/>
<TextBox Name="FancyValue"
Grid.Column="1"
Margin="1,1,1,0"
Text="{Binding}"
MinWidth="45"
Width="Auto"
TextWrapping="Wrap"
AcceptsReturn="False" />
</Grid>
</WrapPanel>
如果用户输入的文本太长,而不是换行,则文本框
会在屏幕外扩展其宽度,而不是按照文本换行
,如下所示:
<WrapPanel Orientation="Horizontal">
<!-- Other label / text box pair grids -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="FancyLabel" Margin="1,1,1,0"/>
<TextBox Name="FancyValue"
Grid.Column="1"
Margin="1,1,1,0"
Text="{Binding}"
MinWidth="45"
Width="Auto"
TextWrapping="Wrap"
AcceptsReturn="False" />
</Grid>
</WrapPanel>
是否有限制最大宽度的机制(最好不将数据绑定到
WrapPanel
上的实际宽度
)?感谢Rob DeLuca给我发送了一些在SO之外工作的东西:
将第二列上的自动
改为*
正确包装:
<WrapPanel Orientation="Horizontal">
<!-- Other label / text box pair grids -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" /> <!-- !!! -->
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="FancyLabel" Margin="1,1,1,0"/>
<TextBox Name="FancyValue"
Grid.Column="1"
Margin="1,1,1,0"
Text="{Binding}"
MinWidth="45"
Width="Auto"
TextWrapping="Wrap"
AcceptsReturn="False" />
</Grid>
</WrapPanel>
这是textbox的一种奇怪行为,但如果不是通过数据绑定,您是否尝试过使用Sizechanged事件阻止textbox宽度的更改?@RohitPrakash:是的,我可以通过绑定或代码隐藏来修复此问题。但任何这样的解决方案都可能是脆弱的。几乎每次我遇到格式化问题时,比如这个WPF都有一些附加属性或者我不知道的东西,这正是我想要的。如果它不存在,那很好;但是我想在我把东西拼凑在一起之前问一下。使用文本修剪。。嗯,非常抱歉,您可以发布您的xaml部分吗?