當您使用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>
當您嘗試此例如用列表框,然後結果將是不同的。
這是下面的代碼結果:

<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
存在於Control的模板中而不是父ScrollViewer
的情況。所以我認爲它不起作用,例如DockPanel.Dock
,它對父母DockPanel
生效。
謝謝,這絕對有幫助! – JDL