我在WPF中遇到了RibbonComboBox问题。我有一个列表,其中包含许多我要添加的项目。窗口中有太多物品,因此您无法看到每件物品。这不会太糟糕,但问题是没有滚动条。我可以用键盘滚动,然后光标丢失,直到我到达列表的末尾,然后我回到列表的顶部。 有办法吗? a)有一个滚动条 b)限制单击下拉按钮时显示的元素数量(我知道它适用于常规组合框)?
我正在使用Visual Studio 2010。
祝福 ç
答案 0 :(得分:0)
您的要求可以实现,但不幸的是,这将是一个非常痛苦的过程。 RibbonComboBox
没有ScrollBar
的原因是因为开发它的人做得很差。显然,默认ControlTemplate
在内部使用StackPanel
,我们都知道这对于这些大小调整问题完全无用。
随着更多项目的添加,StackPanel
只会让ItemsPresenter
无限增长。您可以在CodePlex的RibbonComboBox does not display a scroll bar when appropriate页面中找到对此的一些描述。
因此,您可以根据默认设置声明新ControlTemplate
,并将此StackPanel
替换为Grid
,或将DockPanel
替换为链接页面建议(虽然我个人认为DockPanel
对于这个任务可能有点贵。
那么你如何得到默认的ControlTemplate
以你的为基础?好吧,微软也通过而不是提供它以及MSDN上Control Styles and Templates页面中的所有其他控件使其变得更加困难。相反,您可以使用Blend
找到它,并且可以通过阅读Jeff Wilcox网站上的Blend tip: finding default styles using “Edit a Copy”页面获得该任务的帮助。
答案 1 :(得分:0)
将veritcal滚动条可见性设置为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>