4 Stimmen

ComboBoxItem auf die gesamte Breite der ComboBox, wenn SelectedIndex verwendet wird, oder die Navigation über die Tastatur?

Nachfolgende XAML bewirkt, dass die "Meine Sachen" zentriert werden von ComboBox bis Ich öffne die ComboBox wenn er sich richtig streckt.

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

Die Frage ist, ob es möglich ist, die ComboBoxItem gestreckt wird, auch wenn sie mit SelectedIndex ? Derselbe Fehler oder dieselbe Funktion tritt auf, wenn SelectedIndex unberührt ist (-1) und man das Element mit der Tastatur auswählt.

Abhilfe schafft wahrscheinlich das programmatische Öffnen der ComboBox am Anfang der Anwendung, was ziemlich hässlich ist.

8voto

codeB10 Punkte 116

Sie müssen lediglich die Breite des Rahmens auf die dynamische Breite des äußeren Steuerelements einstellen:

z.B.

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

Versuchen Sie dies:

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

2voto

codeB10 Punkte 116

Ich verstehe, ja - ich bin sicher, dass es einen Weg gibt, dies zu umgehen. Es hängt wirklich davon ab, welches Endergebnis Sie haben möchten. Haben Sie jedes Ihrer Datenelemente eine unterschiedliche Hintergrundfarbe, um sie zu identifizieren oder ist es einfach eine Hintergrundfarbe für Ihre gesamte Combobox, die Sie versuchen, zu erreichen.

Wenn letzteres der Fall ist, versuchen Sie dies - und entfernen Sie vielleicht auch die hervorgehobene Auswahlfarbe, sonst ist vielleicht der Code hinter route korrekt, was die Vorauswahl des ersten Elements betrifft, da dies eine Option sein könnte.

Beispiel für eine ganzflächige Hintergrundfarbe:

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

Hoffentlich hilft das! :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X