2013-06-11 7 views
12

は、誰もがこのようなフレームに垂直スクロールバーを定義することの違いを知っているん: WPFフレームでScrollViewer(垂直スクロール用)を設定する正しい方法はありますか?

 <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のオプションを使用しますが、間違って設定していれば道に驚きたくありません。

ありがとうございます!

答えて

26

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.VerticalScrollBarVisibilityScrollViewer.HorizontalScrollBarVisibility添付プロパティを使用上方。そのコードの結果は、あなたが期待するものとまったく逆です。 HorizontalScrollBarが表示されていません...そして、あなたはまだVerticalScrollBarを見ることができます。

だから、これはあなたがリストボックスで、たとえばこれをしようとするとあなたがしてなり

<ScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Auto"> 
     <Frame Name="Frame1" /> 
</ScrollViewer> 

を使うべきである理由だとは異なるものになります。

enter image description here

<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がコントロールのテンプレート内にあり、親ではないScrollViewerには影響しないようにするためのものです。だから私はそれがDockPanelに影響を与えるDockPanel.Dockのように動作しないと思います。

+0

ありがとう、これは間違いなく助けになります! – JDL

関連する問題