Ответ 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
visible... и вы все еще можете видеть 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>
Это потому, что эти прикрепленные свойства теперь влияют на ScrollViewer в ListBox
, а не на родителя ScrollViewer
, как вы можете ожидать.
Итак, из этого небольшого эксперимента я предполагаю, что приложенное свойство ScrollViewer.VerticalScrollBarVisibility
предназначено для случаев, когда вы хотите иметь возможность влиять на ScrollViewer
, который существует в шаблоне управления, а не на родителя ScrollViewer
. Поэтому я думаю, что это не работает, например, как DockPanel.Dock
, который вступает в силу с родительским DockPanel
.