WPF Combobox - 如何在不滚动的情况下显示两个项目的全部内容?

标签 wpf combobox

以下ComboboxWPF 项目中,每个项目都需要始终恰好有两个高度分别为 256 和 36 的 Rectangles。当用户单击 Combobox 的下拉按钮时,我想让它同时显示 ComboboxItems 而无需用户滚动。

问题:我们怎样才能实现它?目前它只显示第一个 ComboboxItem(里面是 Aqua 颜色矩形),你必须滚动才能看到第二个 ComboboxItem(里面是 YellowGreen 颜色矩形)。我已经尝试在组合框上设置 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>

上述组合框的屏幕截图:

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

enter image description here

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

enter image description here

最佳答案

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

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

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

关于WPF Combobox - 如何在不滚动的情况下显示两个项目的全部内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57062996/

相关文章:

c# - 如何在WPF中设计这样的区域设置

c++ - Visual Studio C++ 组合框控件不适用于多字节字符集

WPF: Canvas 鼠标事件不会在空白区域触发

wpf - 当转换器位于 UserControl.Resources 中时,XAML 设计器 "cannot find type"

wpf - 如何在MVVM模式中验证ViewModel中的数据?

c# - WPF 组合框不更新 ViewModel

C# 资源文件 - 如何从 XAML 访问内部资源?

c# - 将 ViewModel 绑定(bind)到多个窗口

c# - 自定义搜索组合框

mysql - VB.NET -> 组合框随机索引