4

XAML に従うと、それ自体が正しく引き伸ばされると、「自分のもの」が開くComboBox まで中央に配置されます。ComboBox

    <ComboBox Height="30" Width="300" HorizontalContentAlignment="Stretch" SelectedIndex="0">
        <ComboBoxItem HorizontalContentAlignment="Stretch">
            <Border Background="Red">
                <TextBlock>My stuff...</TextBlock>
            </Border>
        </ComboBoxItem>
    </ComboBox>

問題は、ComboBoxItemを使用して選択した場合でも、引き伸ばされることは可能SelectedIndexですか? SelectedIndex がそのまま (-1) で、キーボードを使用して項目を選択すると、同じバグまたは機能が発生します。

回避策はおそらく、アプリの最初にプログラムで ComboBox を開くことですが、これはかなり醜いです。

4

2 に答える 2

8

境界線の幅をアウター コントロールの動的な幅に設定するだけです。

例えば

Width="{Binding ElementName=combox1, Path=ActualWidth}">

これを試して:

<ComboBox x:Name="combox1" Height="30" Width="300" HorizontalContentAlignment="Stretch" 
    SelectedIndex="0">
    <ComboBoxItem HorizontalContentAlignment="Stretch">
        <Border Background="Red" Width="{Binding ElementName=combox1, Path=ActualWidth}">
            <TextBlock>My stuff...</TextBlock>
        </Border>
    </ComboBoxItem>
</ComboBox>
于 2009-10-21T15:19:51.420 に答える
2

はい、わかりました-これを回避する方法があると確信しています。それは本当にあなたが望む最終結果が何であるかに依存します. 各データ項目には、それらを識別するための異なる背景色がありますか、それとも、達成しようとしているコンボボックス全体の背景色にすぎませんか。

後者の場合は、これを試してください。また、強調表示された選択色も削除する可能性があります。それ以外の場合は、最初の項目を事前に選択するという点で、コード ビハインド ルートが正しい可能性があります。

全体の背景色の例:

    <ComboBox Background="Red" x:Name="combox2" Height="30" HorizontalContentAlignment="Stretch" SelectedIndex="0">
        <ComboBoxItem Background="Red" HorizontalContentAlignment="Stretch">
            <TextBlock Background="Red">My stuff...</TextBlock>
        </ComboBoxItem>
    </ComboBox>

お役に立てれば!:)

于 2009-10-22T13:08:30.313 に答える