Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF RibbonComboBox滚动条/限制项目数_C#_Wpf_Visual Studio 2010_Ribbon - Fatal编程技术网

C# WPF RibbonComboBox滚动条/限制项目数

C# WPF RibbonComboBox滚动条/限制项目数,c#,wpf,visual-studio-2010,ribbon,C#,Wpf,Visual Studio 2010,Ribbon,我对WPF中的RibbonComboBox有问题。我有一个清单,上面有很多我想添加的项目。窗口中的项目太多,因此您无法看到所有项目。这不会太糟糕,但问题是没有滚动条。我可以用键盘滚动,然后光标消失,直到我到达列表的末尾,然后我回到列表的顶部。 有办法去吗 a) 有一个滚动条 b) 限制单击下拉按钮时显示的元素数(我知道它适用于常规组合框) 我正在使用VisualStudio2010 祝福 你的要求是可以实现的,但不幸的是,这将是一个非常痛苦的过程。RibbonComboBox没有滚动条的原因是开

我对WPF中的RibbonComboBox有问题。我有一个清单,上面有很多我想添加的项目。窗口中的项目太多,因此您无法看到所有项目。这不会太糟糕,但问题是没有滚动条。我可以用键盘滚动,然后光标消失,直到我到达列表的末尾,然后我回到列表的顶部。 有办法去吗 a) 有一个滚动条 b) 限制单击下拉按钮时显示的元素数(我知道它适用于常规组合框)

我正在使用VisualStudio2010

祝福 你的要求是可以实现的,但不幸的是,这将是一个非常痛苦的过程。
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>