尝试将Scrollviewer添加到TextBlock,以便用户可以向下滚动内容,这些内容通常比可用的屏幕空间更长。
道歉可能是一个愚蠢的问题:我可以看到有很多关于此问题的主题,问题通常是某个固定的高度,但我很难看到哪个元素导致了我的XAML中的问题:< / p>
<Popup StaysOpen="True" Placement="Center" IsOpen="{Binding SummaryOpen}" PlacementTarget="{Binding ElementName=Areas}">
<Border Background="LightGray" BorderBrush="Black" Padding="5" BorderThickness="1">
<Grid Width="500">
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="350" />
<RowDefinition Height="40" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<Label Content="{Binding Name}" />
<Label Content=": " />
<Label Content="{Binding Description}" />
</StackPanel>
<Border Grid.Row="1" BorderBrush="Black" BorderThickness="1">
<StackPanel Background="White" Margin="-1,1,1,-1">
<!-- this is the rogue element -->
<ScrollViewer VerticalScrollBarVisibility="Auto">
<TextBlock Text="{Binding Summary}" TextWrapping="Wrap" />
</ScrollViewer>
</StackPanel>
</Border>
</Grid>
</Border>
</Popup>
ScrollViewer出现,但从不包含实际的滚动条,无论TextBlock中有多少内容。
如果有人能够解释问题所在以及如何解决问题,我将非常感激。
答案 0 :(得分:2)
流氓元素实际上是父StackPanel - 该面板本身不是“固定高度”,但它不能作为ScrollViewer的父级。原因是它将可用高度报告为无限高,因此子ScrollViewer认为它可以扩展到其子项所需的范围,因此它不需要滚动。
看起来您可以轻松地使用边框或网格,其中任何一个都会将其高度限制为父高度,从而解决问题:
<Border Grid.Row="1" BorderBrush="Black" BorderThickness="1">
<Border Background="White" Margin="-1,1,1,-1">
<!-- this is the rogue element -->
<ScrollViewer VerticalScrollBarVisibility="Auto">
<TextBlock Text="{Binding Summary}" TextWrapping="Wrap" />
</ScrollViewer>
</Border>
</Border>