我在WPF中的RibbonComboBox有问题。我有一个列表,上面有很多我想添加的项目。窗口里有太多的项目,所以你不能看到每一个项目。这不会太糟糕,但问题是没有滚动条。我可以用键盘滚动,然后光标消失,直到我到达列表的末尾,然后我回到列表的顶部。有办法吗A,有一个滚动条b)限制在单击下拉按钮时显示的元素数量(我知道它适用于常规组合框)?
我使用的是Visual Studio 2010。
最好的祝福C
您的要求可以实现,但不幸的是,这将是一个非常痛苦的过程。RibbonComboBox
没有ScrollBar
的原因是因为开发它的人做得很差。显然,默认的ControlTemplate
在内部使用StackPanel
,我们都知道这对于这些类型的大小问题是完全无用的。
随着项目的增加,StackPanel
只是让ItemsPresenter
无限增长。你可以在RibbonComboBox中找到一些描述,当CodePlex上合适的页面时,它不会显示滚动条。
因此,修复是为您声明一个新的基于默认的ControlTemplate
,并用Grid
取代这个StackPanel
,或DockPanel
作为链接页面的建议(尽管我个人认为DockPanel
可能有点昂贵的这个任务)。
那么你如何得到默认的ControlTemplate
为基础,你的?微软也让这变得更加困难,因为没有在MSDN的控件样式和模板页面中提供和其他所有控件。相反,你可以使用Blend
来找到它,你可以通过阅读混合技巧来获得帮助:在Jeff Wilcox的网站上使用"编辑副本"页面找到默认样式。
好运。
设置垂直滚动条的可见度为auto: 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>