C# 如何在以编程方式创建的框架控件上强制使用滚动条
这是一个非常简单的问题,就我的一生而言,我无法理解为什么以编程方式创建的C# 如何在以编程方式创建的框架控件上强制使用滚动条,c#,wpf,C#,Wpf,这是一个非常简单的问题,就我的一生而言,我无法理解为什么以编程方式创建的Frame没有继承的ScrollViewer,因此没有HorizontalScrollBarVisibility或VerticalScrollBarVisibility属性 如何将滚动条添加到此帧(而不只是将滚动条添加到帧源) 请注意,我还可以看到导航用户界面,并希望在顶部保留固定用户界面的行为,其内容位于该滚动条的下方。将框架放在滚动条查看器中 或者只需通过ScrollViewer中附加的属性VerticalScrollB
Frame
没有继承的ScrollViewer
,因此没有HorizontalScrollBarVisibility
或VerticalScrollBarVisibility
属性
如何将滚动条添加到此帧(而不只是将滚动条添加到帧源)
请注意,我还可以看到导航用户界面,并希望在顶部保留固定用户界面的行为,其内容位于该滚动条的下方。将
框架
放在滚动条查看器
中
或者只需通过ScrollViewer中附加的属性VerticalScrollBarVisibility
和/或HorizontalScrollBarVisibility
进行设置
Frame f = new Frame();
ScrollViewer.SetVerticalScrollBarVisibility(f, ScrollBarVisibility.Auto);
ScrollViewer.SetHorizontalScrollBarVisibility(f, ScrollBarVisibility.Auto);
您可以通过更改框架
对象使用的内容模板
来完成此操作,以便使用滚动查看器
呈现其内容:
<Frame>
<Frame.ContentTemplate>
<DataTemplate>
<ScrollViewer>
<ContentControl Content="{Binding}"/>
</ScrollViewer>
</DataTemplate>
</Frame.ContentTemplate>
</Frame>
这是我的第一个猜测,但是在父子关系中,框架导航栏不也会随着页面滚动吗?NavigationUI
事实上,当框架是ScrollBarViewer
的子对象时,它会滚动。如果我不想保留导航界面,这将是一个可行的解决方案。啊,这有点像设置z顺序,你必须联系另一个类来做。奇怪Frame
应该继承ScrollViewer
这只是一个奇怪的概念,当我试图在面向对象环境中开发时,试图记住这些外部类。从现在开始,写一个扩展方法来包含在我的项目中来处理这个问题几乎是值得的。对于失败的投票者,你能给出这样做的原因吗?上述解决方案也解决了OP的原始问题,这就是如何将滚动条添加到框架内容中的方法,1)不需要将滚动条添加到框架的源代码中,2)阻止导航UI与框架内容一起滚动。这是一个XAML解决方案,因此与编程创建的框架无关,因为在设计时创建的框架继承了HorizontalScrollBarVisibilityVerticalScrollBarVisibility属性自动生成,因此根本不需要模板。啊,很抱歉。谢谢你的解释!