C# WPF RibbonComboBox滚动条/限制项目数
我对WPF中的RibbonComboBox有问题。我有一个清单,上面有很多我想添加的项目。窗口中的项目太多,因此您无法看到所有项目。这不会太糟糕,但问题是没有滚动条。我可以用键盘滚动,然后光标消失,直到我到达列表的末尾,然后我回到列表的顶部。 有办法去吗 a) 有一个滚动条 b) 限制单击下拉按钮时显示的元素数(我知道它适用于常规组合框) 我正在使用VisualStudio2010 祝福 你的要求是可以实现的,但不幸的是,这将是一个非常痛苦的过程。C# WPF RibbonComboBox滚动条/限制项目数,c#,wpf,visual-studio-2010,ribbon,C#,Wpf,Visual Studio 2010,Ribbon,我对WPF中的RibbonComboBox有问题。我有一个清单,上面有很多我想添加的项目。窗口中的项目太多,因此您无法看到所有项目。这不会太糟糕,但问题是没有滚动条。我可以用键盘滚动,然后光标消失,直到我到达列表的末尾,然后我回到列表的顶部。 有办法去吗 a) 有一个滚动条 b) 限制单击下拉按钮时显示的元素数(我知道它适用于常规组合框) 我正在使用VisualStudio2010 祝福 你的要求是可以实现的,但不幸的是,这将是一个非常痛苦的过程。RibbonComboBox没有滚动条的原因是开
RibbonComboBox
没有滚动条的原因是开发它的人做得很差。显然,默认的ControlTemplate
在内部使用StackPanel
,我们都知道,这对于此类大小调整问题是完全无用的
随着更多项目的添加,StackPanel
只允许itemsresenter
无限增长。您可以在CodePlex上的页面中找到对此的一些描述
因此,修复方法是根据默认模板声明一个新的ControlTemplate
,并用Grid
或链接页面建议的DockPanel
替换此StackPanel
(尽管我个人认为DockPanel
对于此任务可能有点昂贵)
那么,您如何获得默认的ControlTemplate
作为您的基础呢?好吧,微软也让这变得更加困难,因为它没有在MSDN页面上提供所有其他控件。相反,你可以使用Blend
来找到它,你可以通过阅读杰夫·威尔科克斯网站上的页面来获得这项任务的帮助
祝你好运。将Verical滚动条可见性设置为自动:ScrollViewer.VerticalScrollBarVisibility=“auto”
项目1
项目2
项目3
尝试在其样式中添加ScrollViewer。最好是作为ContentControl,我该怎么做呢?:)哇,听起来真的很痛苦:)非常感谢。现在至少我知道我在哪里了。我用一个普通的组合框试过,效果很好,所以也许我会坚持使用它(尽管它看起来不太好)。再次感谢ScrollViewer。VerticalScrollBarVisibility=“Auto”是您的答案
<RibbonComboBox Name="Types" SelectionBoxWidth="100">
<RibbonGallery Name="RibbonCombobox" MaxColumnCount="1" ScrollViewer.VerticalScrollBarVisibility="Auto">
<RibbonGalleryCategory Name="UserBox" ItemsSource="{Binding}" >
<RibbonGalleryItem IsSelected="True">Item 1</RibbonGalleryItem>
<RibbonGalleryItem>Item 2</RibbonGalleryItem>
<RibbonGalleryItem>Item 3</RibbonGalleryItem>
</RibbonGalleryCategory>
</RibbonGallery>
</RibbonComboBox>