WPF RibbonComboBox滚动条/限制项数

时间:2014-06-27 10:11:28

标签: c# wpf visual-studio-2010 ribbon

我在WPF中遇到了RibbonComboBox问题。我有一个列表,其中包含许多我要添加的项目。窗口中有太多物品,因此您无法看到每件物品。这不会太糟糕,但问题是没有滚动条。我可以用键盘滚动,然后光标丢失,直到我到达列表的末尾,然后我回到列表的顶部。 有办法吗? a)有一个滚动条 b)限制单击下拉按钮时显示的元素数量(我知道它适用于常规组合框)?

我正在使用Visual Studio 2010。

祝福 ç

2 个答案:

答案 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>