wpf - WPF Compobox - 如何在不滚动的情况下显示两个项目的全部内容?
问题描述
项目中的以下组合框WPF
需要始终在每个项目中分别具有两个高度Rectangles
256 和 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>
上述组合框的截图:
当用户第一次点击组合框的下拉菜单时显示:
用户必须滚动才能到达组合框的第二项:
解决方案
您可以使用如下所示的依赖属性MaxDropDownHeight
在ComboBox
下拉列表中显示两个组合框项目,而无需滚动,
<ComboBox DockPanel.Dock="Top" Width="25" MaxDropDownHeight="Auto">
我已经用 320 测试了你的代码,Height
它工作得很好。如果您需要添加更多项目,您可以相应地增加该MaxDropDownHeight
值。
推荐阅读
- python - 在jupyter中打印复数矩阵更漂亮
- laravel - 订单项目无法在 Laravel 的采购订单视图中显示
- python - 在导入 Jupyter 笔记本时从 py 文件更新脚本
- google-chrome - 动画 GIF 在 Chrome 中抗锯齿,但在 Firefox 或 Edge 中没有
- r - R:创建带有省略号参数的函数时的词法范围问题
- drupal - Drupal 8 中的查询段落类型
- python - 如何直接访问枚举的值作为类属性?
- r - 警告“变量不是一个因素”使用预测使用插入符号进行 One-Hot 编码
- c# - 字符串包含使用列表返回 false
- php - 当其他字段为空时,将一个字段设为必填