このようなフレームに垂直スクロールバーを定義することの違いを誰かが知っていますか:
<ScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Auto">
<Frame Name="Frame1"
ScrollViewer.CanContentScroll="True" />
</ScrollViewer>
またはこのように:
<ScrollViewer Grid.Row="2">
<Frame Name="Frame1"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.CanContentScroll="True" />
</ScrollViewer>
このフレームはWebBrowserコントロールにネストされ、最初に設定すると垂直スクロールバーが正しく表示され、スクロール(自動)する必要がある場合にのみ表示されます。 2番目の方法で設定すると、垂直スクロールバーは機能しますが、スクロールする必要がない場合(表示)でも常に表示されます。
1番目のオプションは自分のニーズを満たしているので使用しますが、間違って設定したとしても驚くことはありません。
ありがとう!
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>
これは、これらの添付プロパティがListBox
内のScrollViewerに影響するようになり、期待どおりに親ScrollViewer
に影響を与えないためです。
したがって、この小さな実験から、ScrollViewer.VerticalScrollBarVisibility
添付プロパティは、親のScrollViewer
ではなく、コントロールのテンプレート内に存在するScrollViewer
に影響を与えたい場合のためのものであると想定します。したがって、たとえば、親DockPanel
に影響するDockPanel.Dock
としては機能しないと思います。