0

在我有很多项目(> 10)的组合框中,我需要:(a)在下拉菜单发生时显示所有项目 - 或:(b)减少项目之间的空间(看起来过多,几乎“卡通")

所以,我真的更喜欢两者。我该如何做一个或另一个或两者兼而有之?

看起来 MaxDropDownHeight 属性只是票,但设置为 Infinity 它不起作用/对 Infinity 有一个奇怪的定义。

这是其中一个存在此问题的 XAML:

<ComboBox x:Name="comboBoxDay" Grid.Row="4" Grid.Column="5" Margin="8" IsEnabled="False"></ComboBox>

...以及它包含的内容:

for (int i = 1; i < 32; i++)
{
    comboBoxDay.Items.Add(i);
}

更新

将高度设置为 15 会截断部分文本;18 也是如此。即便如此,也只显示 3 月至 11 月。我还将 MaxDropDownHeight 设置为第一个 320,然后是 520。这是相关组合框的整个 XAML:

        <ComboBox x:Name="comboBoxFromMonth" Grid.Row="1" Grid.Column="1" 
Height="24" Width="80" MaxDropDownHeight="520" HorizontalAlignment="Left" 
VerticalAlignment="Center" Margin="4">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}" Height="20" />
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

...(1 月、2 月和 12 月在没有滚动的情况下仍然无法显示,尽管下面有足够的空间 - 房地产不是问题)。

似乎组合框中的所有项目都应该默认显示,而不需要跳过箍来显示它们……至少有合理数量的项目(42 个或更少)。

4

2 回答 2

1

对于(a),您是对的,您可以使用MaxDropDownHeight,但它只会转到屏幕的顶部/底部,而不会进一步。要使其垂直填充屏幕,您需要修改默认控件模板并为 Popup 的Placement属性赋予不同的值(例如,Center):

对于(b),您可以通过定义一个来减少元素之间的空间ItemTemplate

<ComboBox>
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" Height="15" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
于 2012-11-15T02:47:29.240 回答
0

我也试图让弹出窗口向下显示,最终我在编辑模板后设置了边距。在给定的链接中,给出了一个命令 PopupPlacement,但它在 WinRT 中不起作用。但是这个提示帮助我理解了这个想法。

于 2013-01-09T15:00:08.410 回答