在我的包含很多项目(> 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.这是所讨论的comboBox的整个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月仍然不显示没有滚动,虽然下面有足够的空间 - 房地产不是问题。)
看起来组合框中的所有项目都应该显示BY DEFAULT,而不是要求跳过箍来显示所有项目...至少使用合理数量的项目(42或更少)。
答案 0 :(得分:1)
对于(a),你是对的,你可以使用MaxDropDownHeight
,但它只会进入屏幕的顶部/底部,而不会再进一步。要使其垂直填充屏幕,您需要修改默认Control Template并为弹出式Placement
属性赋予不同的值(例如Center
):
对于(b),您可以通过定义ItemTemplate
:
<ComboBox>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Height="15" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
答案 1 :(得分:0)
我也试图让Popup向下显示,最后在编辑模板后设置边距。在给定的链接中有一个命令PopupPlacement,但它在WinRT中不起作用。但这个提示帮助我理解了这个想法。