拿这个简单的代码:
<Window x:Class="WpfApplication1.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window2" Height="340" Width="600">
<ScrollViewer>
<Grid Background="Red" VerticalAlignment="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="20" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="1:" />
<TextBox Grid.Row="0" Grid.Column="1" Height="80" Margin="4" />
<TextBlock Grid.Row="1" Text="2:" />
<TextBox Grid.Row="1" Grid.Column="1" Height="80" Margin="4" />
<TextBlock Grid.Row="2" Text="3:" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="4.:" />
</Grid>
</ScrollViewer>
</Window>
注意第 nr 4 行如何不再在网格内?!它呈现在它之外。此外,如果您缩短窗口,垂直滚动条会变得可见,但它只会滚动红色区域。无法滚动查看第 4 行。
如果VerticalAlignment="Top"
从 中删除Grid
,则渲染似乎已修复,但滚动仍然无法正常工作。
谁能解释到底发生了什么?这是微软的错误吗?
我正在运行 Visual Studio 2017 社区版(完全更新),Win 10 版本 1803,其中包含 .NET 4.7.2。
(我认为它与.NET 4.7.2有关,因为直到现在我才注意到这个问题)
有一种解决方法,<RowDefinition Height="Auto" />
为所有行指定 - ,但这不是必需的......