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部分吗?