当您使用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 时,结果会有所不同。
这是以下代码的结果:
<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>
这是因为这些附加属性现在影响 ScrollViewer 内部而不是您可能期望的ListBox
父级。ScrollViewer
因此,从这个小实验中,我假设ScrollViewer.VerticalScrollBarVisibility
附加属性适用于您希望能够影响ScrollViewer
Control 模板中存在的属性而不是 parent 的情况ScrollViewer
。所以我认为它不起作用,例如DockPanel.Dock
它对 parent 生效DockPanel
。