将TextBox的宽度限制为包含它的ListView的宽度

时间:2012-03-07 10:09:24

标签: wpf listview mvvm textbox

我正在开发一个MVVM应用程序(这里的示例不是很MVVM,它只是一个模型)。

我有一个ListView,它绑定到TextItemViewModel个实例的集合,这些实例的视图在TextItemView中定义。每个TextItemView包含一个Grid,其中包含一个Auto列,并在*列上填充。填充列包含TextBox,用户可以在其中输入文字。

我希望TextItemView s填充ListView的水平空间(这样可行),如下所示:

enter image description here

但是,当用户在框中输入长文本时,我希望它在Height中展开,而不是在Width中展开。目前,Width增加,ListView获得滚动条,如下所示:

enter image description here

我的ListView代码如下所示:(我已经取出MVVM绑定代码并在此示例的代码隐藏中设置ItemsSource

<ListView Name="listview"
          SelectionMode="Single"
          Margin="5"
          MinHeight="50"
          HorizontalAlignment="Stretch"
          HorizontalContentAlignment="Stretch" />

我的TextItemView代码如下所示:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>

    <Button Content="SomeButton"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"                
            Margin="5"
            Grid.Column="0" />

    <TextBox Text="{Binding Path=NoteText}"
             TextWrapping="Wrap"
             AcceptsReturn="True"
             AcceptsTab="True"
             VerticalScrollBarVisibility="Auto"
             HorizontalScrollBarVisibility="Disabled"
             HorizontalAlignment="Stretch"                 
             Margin="5"                 
             Grid.Column="1" />
</Grid>

任何人都可以告诉我如何强制TextItemView填充ListView的宽度(就像它一样),但要包裹TextBox并展开{{1}当TextItemView填满时,在Height中?

1 个答案:

答案 0 :(得分:8)

好的,我现在感谢WPF - How to stop TextBox from autosizing?

Trick是将以下内容添加到ListView定义:

ScrollViewer.HorizontalScrollBarVisibility="Disabled"