XAML: Combobox Binding

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von hlghyr.

    XAML: Combobox Binding

    Hallo Forum!
    Hab mal wieder ein Problem mit folgenden Codeausschnitt.

    XML-Quellcode

    1. <ComboBox DisplayMemberPath="IDFarbe" Grid.Column="1" Grid.Row="0" Height="23"
    2. HorizontalAlignment="Left" ItemsSource="{Binding}" Margin="3"
    3. Name="IDFarbeComboBox" VerticalAlignment="Center" Width="120" IsEditable="False">
    4. <ComboBox.Resources>
    5. <Style TargetType="{x:Type ComboBoxItem}">
    6. <Setter Property="Background" Value="{Binding Path=IDFarbe}"/>
    7. </Style>
    8. <Style TargetType="{x:Type ComboBox}">
    9. <Setter Property="Background" Value="{Binding Path=SelectedIndex}"/>
    10. </Style>
    11. </ComboBox.Resources>
    12. </ComboBox>

    In die Conbobox wird per Binding aus einer Tabelle die Namen von Farben geladen.
    Im ersten Style wird der Hintergrund von jedem Item entsprechend seiner geladenen Datengesetzt.
    Nun soll im zweiten Style, wenn ich ein Item auswähle der Hintergrung entsprechend der gewählten Farbe gesetzt werden.
    Alles mögliche hab ich schon versucht. Aber es will einfach nicht funktionieren. Hat vielleicht einer eine Ahnung was ich falsch mache.
    Hab es mit SelectedValue, SelectedItem, SelectedItem. Contend usw. probiert.

    MfG
    hlghyr
    probierma

    XML-Quellcode

    1. <ComboBox DisplayMemberPath="IDFarbe" Grid.Column="1" Grid.Row="0" Height="23"
    2. HorizontalAlignment="Left" ItemsSource="{Binding}" Margin="3"
    3. Name="IDFarbeComboBox" VerticalAlignment="Center" Width="120" IsEditable="False"
    4. Background="{Binding RelativeSource={RelativeSource Self}, Path=SelectedItem.IDFarbe}">
    5. </ComboBox>

    Ungetestet
    ich weiß - aber vlt. mag er ja trotzdem noch eine Variante ausprobieren, die ohne zusätzliche Styles auskommt.

    bzw. kommen könnte - ich weiß ja nicht, ob die Property SelectedItem.IdFarbe für die Bindung an die BackColor geeignet ist - kann sein, es muß ein Brush sein oder eine Color.
    Hi ErfinderDesRades!
    Ja was Du geschrieben hast funktioniert auch sehr gut.
    Aber mal eine andere Frage!
    Kann man in den Items der Combobox die automatische Selektion bei der Mausüberfahrt deaktivieren?
    Oder besser gesagt das MouseOver!
    MfG
    hlghyr
    Hi ErfinderDesRades!
    Da finde ich auch bloß das was ich eigentlich schon ausprobiert habe. Wollte es mit einen Trigger machen. So in der Art:

    XML-Quellcode

    1. <Style.Triggers>
    2. <Trigger Property="IsMouseOver" Value="True">
    3. <Setter Property="Background" Value="Beige"/>
    4. </Trigger>
    5. </Style.Triggers>

    Aber funktioniert nicht. Keine Reaktion.
    Werd wohl noch ne weile suchen müssen. Irgend wann bekomm ich es schon raus.
    Noch ein Dank für Deine Mühe.
    MfG hlghyr