有人可以向我解释为什么以下XAML不能按照我预期的方式工作,以及是否有任何解决方法?
我希望TextBox遵守它使用的RowDefinition的Min-和MaxHeight属性。相反,它的MaxHeight用于掩盖可用空间,但同时它的内容正在掩盖后面...... Ehhhh?!
我期望的行为与为RowDefinition提供非无限高度,2个滚动条时的行为相同。一个ScrollBar用于TextBox,另一个用于屏幕的其余部分。
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition MinHeight="100" MaxHeight="200" />
<RowDefinition Height="40" />
</Grid.RowDefinitions>
<Button Content="Top" />
<TextBox Grid.Row="1" AcceptsReturn="True" xml:space="preserve" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
***Enter a lot of text including enters here!***
</TextBox>
<Button Content="Bottom" Grid.Row="2" />
</Grid>
</ScrollViewer>
希望有人可以帮我解决这个问题。
谢谢,
维姆
答案 0 :(得分:0)
在TextBox上设置最小和最大高度可以使滚动条正确显示。
<TextBox Grid.Row="1"
AcceptsReturn="True"
xml:space="preserve"
MinHeight="100"
MaxHeight="200"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto">
答案 1 :(得分:0)
这确实是一种奇怪的行为。
看起来像Grid本身没有大小限制(在ScrollViewer中并且没有设置Height)的组合,而没有Height设置为绝对值的RowDefinition没有正确约束TextBox。
如果你绝对需要这个星座并且不想依赖任何其他东西,你可以这样做:
<RowDefinition MinHeight="100" MaxHeight="200" Height="{Binding ActualHeight, RelativeSource={RelativeSource Self}}"/>