2013-06-11 31 views
12

kimse böyle bir çerçeve üzerinde dikey bir kaydırma çubuğu tanımlayan arasındaki farkı biliyor: WPF Çerçevesinde ScrollViewer'ı (dikey kaydırma için) ayarlamak için doğru yol?

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

veya böyle

:

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

Bu çerçeve WebBrowser denetiminde iç içe ve bu ilk yolu ayarlıyor dikey kaydırma çubuğunu doğru şekilde görüntüler ve yalnızca kaydırma yapması gerektiğinde görünür (otomatik). İkinci kaydırma yöntemini ayarladığımda, dikey kaydırma çubuğu çalışır, ancak kaydırma yapması gerekmediğinde bile her zaman görünürdür (görünür).

1. seçeneği kullanıyorum çünkü ihtiyaçlarımı karşılar, ancak yanlış ayarlıyorum, yolda şaşırmak istemiyorum.

Teşekkürler!

cevap

26

ScrollViewer.VerticalScrollBarVisibility veya ScrollViewer.HorizontalScrollBarVisibility ekli özelliğini kullandığınızda, Frame ile hiçbir etkisi yoktur.

<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> 

örnekte her iki ScrollViewer.VerticalScrollBarVisibility ve ScrollViewer.HorizontalScrollBarVisibility bağlı özellikleri kullanılan, yukarıda. Bu kodun sonucu beklediğiniz şeylerin tam tersidir. HorizontalScrollBar görünür değil ... ve hala VerticalScrollBar'u görebilirsiniz. Bu size ListBox ile örneğin daha sonra farklı olacaktır sonuçlanan bu deneyin zaman

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

kullanmalıdır nedir niçin

bu muydu yani.

Bu

aşağıdaki kodla sonucudur:

enter image description here beklediğiniz olabileceğinden bu ekli özellikleri şimdi ListBox değil ebeveyn ScrollViewer içinde ScrollViewer etkiler çünkü var

<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> 

.

Yani bu küçük deneyden ben ScrollViewer.VerticalScrollBarVisibility ekli özelliği denetimin şablonuna içinde var ScrollViewer değil ebeveyn ScrollViewer etkileyecek isterler durumlarda içindir varsayalım. Bu yüzden, örneğin DockPanel numaralı ana sayfada etkili olan DockPanel.Dock olarak çalışmadığını düşünüyorum.

+0

Teşekkürler, bu kesinlikle yardımcı olur! – JDL