WPF带状组合框滚动条/限制项目数量



我在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>

最新更新