让子控制宽度大小以适应并限制其最大值

时间:2011-12-20 16:51:25

标签: wpf xaml layout textbox

编辑:我试着改写我的问题,对不起,如果不清楚的话。无论如何,感谢所有人。

假设我有一个UserControl,其布局的网格有1行x 3列,前2个自动调整,第3个是星号:

<Grid>
<Grid.RowDefinitions>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <ComboBox MinWidth="80" MaxWidth="150" .../>
    <CheckBox Grid.Column="1" VerticalAlignment="Top".../>
    <TextBox Grid.Column="2" MaxHeight="400" TextWrapping="Wrap" HorizontalAlignment="Stretch"...>
</Grid>

TextBox具有文本换行功能,其垂直滚动条可见性设置为auto,其水平隐藏。

现在,我有一些窗口,包括一个ListBox,其项目是此UserControl的实例,如:

<ListBox HorizontalContentAlignment="Stretch".../>

ListBox采用1列星形网格,因此可以拉伸以适应其容器中的所有可用宽度。当我调整此ListBox的容器大小时,ListBox也按预期调整大小,因为它在星号Grid列中拉伸;对于ListBox项目也是如此,它们也被拉伸,在这种情况下恰好是具有上述布局的UserControl的实例(网格中的3列,第3个星大小)。

问题是当我输入一些长文本时,用作列表框项目的UserControl的第3列中的TextBox不应自动增加其宽度:它应该只是换行,增加其高度(达到最大高度) ;然后会出现垂直滚动条)。换句话说,其MaxWidth应由可用空间确定,如宽度。

我应该如何为此编码我的XAML?

1 个答案:

答案 0 :(得分:0)

默认情况下,这应该是基于您发布的代码的行为。

尝试设置TextBox的HorizontalAlignment="Stretch"