我有以下startswith
,其中包含Grid
:
TextBox
我希望<UserControl ...>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30px"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1px"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="1" Grid.RowSpan="3" AcceptsReturn="True"
TextWrapping="Wrap" HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Visible" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"/>
<!-- content in other cells of the Grid's first column -->
</Grid>
</UserControl>
填充控件上可用的所有空间(宽度和高度),并且用户应输入更多文本而不是适合它我希望其垂直滚动条变为活动状态,而不调整大小TextBox
。相反的是,TextBox
的大小会随着内容的变化而变化,整个网格随之增长。
我如何实现我的需要?
以上截图是内容适合TextBox
的情况。下面的屏幕截图是当没有足够空间容纳所有内容时的情况 - TextBox
然后调整大小以适应它,这也调整了放置它的网格,使它看起来破碎。
编辑2 :演示此行为的项目为here。
答案 0 :(得分:0)
TextBox
不会填充Grid
。您可以为Background
:
Grid
来自行确认
<UserControl>
<Grid Background="Yellow">
...
这是因为Grid
的高度为30 px +,无论TextBox
的高度是+ 1 px。要使第2行或第3行的内容填充Grid
,您需要将Height
中的至少一个RowDefinitions
更改为*
:
<UserControl>
<Grid Background="Yellow">
<Grid.RowDefinitions>
<RowDefinition Height="30px"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="1px"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="1" Grid.RowSpan="3" AcceptsReturn="True"
TextWrapping="Wrap" HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Visible" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"/>
</Grid>
</UserControl>
答案 1 :(得分:0)
我设法通过在Border
的{{1}}的相同单元格中添加不可见Grid
,然后设置TextBox
'TextBox
来解决此问题。分别为Width
的{{1}}到Height
和ActualWidth
:
ActualHeight
这导致Border
保持固定<Border x:Name="b" Grid.Column="1" Grid.RowSpan="3"
HorizontalAlignment="Stretch"/>
<TextBox AcceptsReturn="True" TextWrapping="Wrap" Grid.Column="1"
Grid.RowSpan="3" Width="{Binding ActualWidth, ElementName=b}"
Height="{Binding ActualHeight, ElementName=b}"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Visible" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"/>
,无论其内容如何,但其TextBox
还有另一个问题:当界面扩展时,它会增长,但没有之后收缩,因为潜在的Height
。诀窍是将Width
的{{1}}设置为ScrollViewer
,而不是像以前那样设置ScrollViewer
。
我将示例项目的更改推送到GitHub,因此解决方案现在可用specification。