当您使用 ScrollViewer.VerticalScrollBarVisibility
或 ScrollViewer.HorizontalScrollBarVisibility
附加属性时,它在Frame中没有任何效果。
<ScrollViewer Margin="225.667,-4,0,296.939" HorizontalAlignment="Left" Width="221.667">
<Frame Content="Frame" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Hidden" Source="UserControl2.xaml" Background="#FFDE5454"/>
</ScrollViewer>
在上面的示例中,我同时使用了
ScrollViewer.VerticalScrollBarVisibility
和
ScrollViewer.HorizontalScrollBarVisibility
附加属性。该代码的结果与您期望的完全相反。没有
HorizontalScrollBar
可见...而您仍然可以看到
VerticalScrollBar
。因此,这就是您应该使用的内容。
<ScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Auto">
<Frame Name="Frame1" />
</ScrollViewer>
例如,当你尝试使用ListBox时,结果将会有所不同。
以下是这段代码的结果:
![在此处输入图片描述](https://istack.dev59.com/RNSar.webp)
<ScrollViewer Margin="225.667,0,0,12.761" Height="280.178" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="221.667">
<ListBox ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Visible" Background="Orange" ItemsSource="{Binding Collection}" DisplayMemberPath="Property1" />
</ScrollViewer>
这是因为这些附加属性现在影响的是 ListBox
内部的 ScrollViewer,而不是像您可能期望的那样影响父级 ScrollViewer
。
因此,通过这个小实验,我认为 ScrollViewer.VerticalScrollBarVisibility
附加属性适用于那些希望影响控件模板内存在的 ScrollViewer
而不是父级 ScrollViewer
的情况。因此,我认为它不会像 DockPanel.Dock
那样对父级 DockPanel
生效。