有人知道在框架上定义垂直滚动条有什么区别吗:
<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控件中,第一种设置方式会正确显示垂直滚动条,并且仅在需要滚动(自动)时才可见。当我以第二种方式设置它时,垂直滚动条工作,但即使不需要滚动(可见),它也总是可见的。
我将使用第一个选项,因为它满足了我的需求,但我不想因为设置错误而感到惊讶。
谢谢!
发布于 2013-06-12 07:53:20
当您使用ScrollViewer.VerticalScrollBarVisibility或ScrollViewer.HorizontalScrollBarVisibility附加属性时,它对帧没有任何影响。
<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。
https://stackoverflow.com/questions/17054824
复制相似问题