首页 > 解决方案 > WPF Compobox - 如何在不滚动的情况下显示两个项目的全部内容?

问题描述

项目中的以下组合框WPF需要始终在每个项目中分别具有两个高度Rectangles256 和 36。当用户点击下拉按钮时,Combobox我希望它同时显示ComboboxItems而无需用户滚动。

问题:我们怎样才能实现它?目前它只显示第一个ComboboxItem(内部为浅绿色矩形),您必须滚动才能看到第二个ComboboxItem(内部为黄绿色矩形)。我曾尝试ScrollViewer.VerticalScrollBarVisibility="Hidden"在组合框上进行设置,但这使它变得更糟,因为它甚至不允许显示第二个项目。

XANL

<Window x:Class="Wpf_TestApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Wpf_TestApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="569.455" Width="800">
    <Grid>
        <StackPanel Margin="5" Width="15">
                <ComboBox DockPanel.Dock="Top" Width="25">
                    <DockPanel>
                        <ComboBoxItem DockPanel.Dock="Top">
                            <StackPanel Width="180" Height="260">
                                <Rectangle x:Name="MyRectangle" Fill="Aqua" Width="176" Height="256"/>
                            </StackPanel>
                        </ComboBoxItem>
                    </DockPanel>
                    <DockPanel>
                        <ComboBoxItem DockPanel.Dock="Top">
                            <StackPanel Width="180" Height="38">
                                <TextBlock Text="Second Item:" />
                                <Rectangle x:Name="MyOtherRectangle" Fill="YellowGreen" Width="176" Height="36"/>
                            </StackPanel>
                        </ComboBoxItem>
                    </DockPanel>
                </ComboBox>
        </StackPanel>
    </Grid>
</Window>

上述组合框的截图:

当用户第一次点击组合框的下拉菜单时显示

在此处输入图像描述

用户必须滚动才能到达组合框的第二项

在此处输入图像描述

标签: wpfcombobox

解决方案


您可以使用如下所示的依赖属性MaxDropDownHeightComboBox下拉列表中显示两个组合框项目,而无需滚动,

        <ComboBox DockPanel.Dock="Top" Width="25" MaxDropDownHeight="Auto">

我已经用 320 测试了你的代码,Height它工作得很好。如果您需要添加更多项目,您可以相应地增加该MaxDropDownHeight值。


推荐阅读