有谁知道在这样的框架上定义垂直滚动条的区别:
<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 控件中,并将其设置为第一种方式正确显示垂直滚动条,并且仅在需要滚动(自动)时可见。当我以第二种方式设置它时,垂直滚动条工作但即使不需要滚动(可见)也始终可见。
我将使用第一个选项,因为它满足我的需求,但如果我的设置不正确,我不想在路上感到惊讶。
谢谢!
最佳答案
当您使用 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
可见...您仍然可以看到 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
存在于 Control 的模板中而不是父级 ScrollViewer
.所以我认为它不起作用,例如 DockPanel.Dock
这对父级 DockPanel
生效.
关于wpf - 在 WPF 框架上设置 ScrollViewer(用于垂直滚动)的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17054824/