myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » Wie im Popup einer Combobox das selektierte Item mit zusätzlichem Text/Symbol anzeigen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie im Popup einer Combobox das selektierte Item mit zusätzlichem Text/Symbol anzeigen?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
CodeF
myCSharp.de-Mitglied

Dabei seit: 07.01.2020
Beiträge: 10


CodeF ist offline

Wie im Popup einer Combobox das selektierte Item mit zusätzlichem Text/Symbol anzeigen?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

ich möchte im Popup einer Combobox das selektierte Item mit einem zusätzlichen Text/Symbol anzeigen.

Dazu müsste ich aber im ItemTemplate einen TextBlock an einen Item einer Collection binden. K.a. ob das geht, hier der Code:

XML-Code:
      <ComboBox
            Grid.Row="1"
            Grid.Column="1"
            Margin="5,5,5,5"
            ItemsSource="{Binding AvailableBaudrates}"
>
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Width="50" Text="{Binding AvailableBaudrates}" />
                        <TextBlock x:Name="Column2" Text="X" />
                    </StackPanel>
                    <DataTemplate.Triggers>
                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ComboBoxItem}, Path=IsSelected}" Value="True">
                            <Setter TargetName="Column2" Property="Visibility" Value="Visible" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ComboBoxItem}}" Value="{x:Null}">
                            <Setter TargetName="Column2" Property="Visibility" Value="Hidden" />
                        </DataTrigger>
                    </DataTemplate.Triggers>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

und

C#-Code:
public class ComPortEdit
    {
        int[] baudrate = new int[] { 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 230400, 460800, 921600 };
        int[] databits = new int[] { 5, 6, 7, 8 };

        private ObservableCollection<int> availableBaudrates;

        public ObservableCollection<int> AvailableBaudrates
        {
            get
            {
                return availableBaudrates ?? (availableBaudrates = GetBaudrates());
            }
            set
            {
                availableBaudrates = value;
            }
        }

private ObservableCollection<int> GetBaudrates()
        {
            var b = new ObservableCollection<int>();
            foreach (int i in baudrate)
            {
                b.Add(i);
            }
            return b;
        }

Die ItemSource der Combobox erwartet ja eine Collection, die Bindung des TextBlocks einen String.

Dieser String ist ja aber ein Item in der Collection. Wie krieg ich das hin?
16.03.2020 08:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.379
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Binde den TextBlock halt nicht an die Collection sondern an die Eigenschaft mit dem Text. Hier gibt es Beispiele:  [Artikel] MVVM und DataBinding, Strg-F "DataTemplate"
16.03.2020 17:12 Beiträge des Benutzers | zu Buddylist hinzufügen
CodeF
myCSharp.de-Mitglied

Dabei seit: 07.01.2020
Beiträge: 10

Themenstarter Thema begonnen von CodeF

CodeF ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

im Grunde würde nachfolgender Code funktionieren, ich bräuchte aber nicht PreviousData sonder CurrentData.

Wie kann ich darauf zugreifen?

XML-Code:
<TextBlock Width="50" Text="{Binding RelativeSource={RelativeSource Mode=PreviousData}}" />

Gruß
17.03.2020 09:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.379
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

So müßte es funktionieren:

XML-Code:
<TextBlock Width="50" Text="{Binding}" />
17.03.2020 13:44 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 2 Monate.
Der letzte Beitrag ist älter als 2 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 28.05.2020 21:17