ComboBoxItem per tutta la larghezza del ComboBox, quando si utilizza SelectedIndex, o la navigazione tastiera?

StackOverflow https://stackoverflow.com/questions/1582954

Domanda

A seguito XAML fa sì che il "My Stuff" essere centrata ComboBox fino a apro le ComboBox, quando si allunga in modo corretto.

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

La domanda è: è possibile ottenere il ComboBoxItem essere allungato anche quando è selezionata tramite SelectedIndex? Stesso problema o funzionalità, accade se SelectedIndex è intatto (-1) e si seleziona la voce utilizzando la tastiera.

Per risolvere il problema è probabilmente per aprire la casella combinata a livello di codice all'inizio di app, che è piuttosto brutto.

È stato utile?

Soluzione

Hai solo bisogno di impostare la larghezza del bordo per la larghezza dinamica del vostro outercontrol:

es.

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

Prova questo:

<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>

Altri suggerimenti

vedo sì - sono sicuro che c'è un modo intorno a questo. Dipende veramente quello che il risultato finale è che si desidera. Do ognuno dei vostri elementi di dati hanno un colore di sfondo differenza di identificarli o è semplicemente un colore di sfondo per tutta la vostra casella combinata che si sta cercando di ottenere.

Se è quest'ultimo, provate questo -. E forse anche rimuovere il colore selezione evidenziata troppo, altrimenti forse il codice dietro percorso è corretto, in termini di preselezione il vostro primo oggetto, che potrebbero essere un'opzione

Esempio di All over Colore di sfondo:

    <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>

Spero che questo aiuti! :)

YourCodeFactory.com

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top