0

多くのアイテム (> 10) を持つ私のコンボボックスでは、次のいずれかを行う必要があります: (a) ドロップダウンが発生したときにすべてのアイテムを表示するか、または: (b) アイテム間のスペースを減らします (過剰に見えます。 ")

だから、私は本当に両方を好むでしょう。どちらか、または両方を行うにはどうすればよいですか?

MaxDropDownHeight プロパティは単なるチケットのように見えますが、無限に設定すると機能しません/無限の奇妙な定義があります。

この問題を抱えているそのうちの 1 つの 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、画面の上部/下部にのみ移動し、それ以上は移動しません。画面全体に垂直に表示するには、デフォルトのコントロールテンプレートを変更し、ポップアップのPlacementプロパティに別の値を指定する必要があります(例:) Center

ItemTemplate(b)の場合、 :を定義することにより、要素間のスペースを減らすことができます。

<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 に答える