quelqu'un connaît-il la différence entre définir une barre de défilement verticale sur un cadre comme celui-ci:
<ScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Auto">
<Frame Name="Frame1"
ScrollViewer.CanContentScroll="True" />
</ScrollViewer>
ou comme ça:
<ScrollViewer Grid.Row="2">
<Frame Name="Frame1"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.CanContentScroll="True" />
</ScrollViewer>
Ce cadre est imbriqué dans un contrôle WebBrowser et le définir de la première manière affiche correctement la barre de défilement verticale et n'est visible que lorsqu'il a besoin de défiler (auto). Lorsque je le règle de la deuxième façon, la barre de défilement verticale fonctionne mais est toujours visible même lorsqu'elle n'a pas besoin de défiler (visible).
Je vais utiliser la 1ère option car elle répond à mes besoins, mais je ne veux pas être surpris en cours de route si je ne la configure pas correctement.
Merci!
Lorsque vous utilisez ScrollViewer.VerticalScrollBarVisibility
ou ScrollViewer.HorizontalScrollBarVisibility
propriété attachée, elle n'a aucun effet avec 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>
Dans l'exemple ci-dessus, j'ai utilisé les deux ScrollViewer.VerticalScrollBarVisibility
et ScrollViewer.HorizontalScrollBarVisibility
propriétés attachées. le résultat de ce code est exactement le contraire de ce que vous attendez. Il n'y a pas de HorizontalScrollBar
visible ... et vous pouvez toujours voir VerticalScrollBar
.
Voilà pourquoi c'est ce que vous devez utiliser
<ScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Auto">
<Frame Name="Frame1" />
</ScrollViewer>
Lorsque vous essayez ceci par exemple avec ListBox, le résultat sera différent.
C'est le résultat du code suivant:
<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>
En effet, ces propriétés attachées affectent désormais ScrollViewer dans ListBox
et non le parent ScrollViewer
comme vous pouvez vous y attendre.
Donc, à partir de cette petite expérience, je suppose que ScrollViewer.VerticalScrollBarVisibility
la propriété jointe est destinée aux cas où vous souhaitez pouvoir affecter ScrollViewer
qui existe dans le modèle de Control et non le parent ScrollViewer
. Je pense donc que cela ne fonctionne pas par exemple comme DockPanel.Dock
qui prend effet sur le parent DockPanel
.