Laden...

[erledigt] WPF Combobox: Ungebundene Combobox und SelectedValue

Erstellt von m.grauber vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.892 Views
M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 12 Jahren
[erledigt] WPF Combobox: Ungebundene Combobox und SelectedValue

Hallo,

normalerweise binde ich eine Combobox immer per Binding an eine Liste und das klappt auch. In einigen einfacheren Fällen möchte ich jedoch manuelle Werte mit Add hinzufügen. Wenn es sich nur um Werte (und nicht um ComboBoxItems) handelt, kann ich prima per SelectedValue= den Wert zuweisen.

Sobald ich Formatierung der Items benötige, muss ich ja z. B. ein ComboBoxItem hinzufügen. Hier habe ich aber das Problem, wenn ich das SelectedValue setzen will, klappt es nicht. (Es bleibt null und es ist nichts ausgewählt).


ComboBoxItem CItem = new ComboBoxItem();
CItem.Content="15";
CB.Items.Add(CItem);

Wie kann ich nun folgendes machen:


CB.SelectedValue="15";

Bitte nicht über SelectedIndex=0 o. ä. Ich möchte direkt den Wert setzen. Benötige ich dafür im XAML-Code noch ein SelectedValuePath="{Binding... oder ähnliches? X(

Vielen Dank!

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

1.552 Beiträge seit 2010
vor 12 Jahren

Hallo m.grauber,

Wenn du der ComboBox eine ObservableCollection als ItemsSorce übergibst, kannst du prima der ObservableCollection Items hinzufügen und diese auch per Code auswählen. So wie du es machst geht es nur umständlich. Ich habe noch keinen Grund gefunden Items.Add der ItemsSource vorzuziehen.

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 12 Jahren

Hallo Michael,

Danke! Ja, so mache ich es normalerweise auch. Manchmal - z. B. wenn im Combo einfach nur Jahreszahlen dargestellt werden, finde ich es aber als zu viel Overhead, noch eine Liste oder Observable Collection zu erstellen.

Ich dachte, es geht in diesem Fall sogar einfacher. Aber wenn Du mir schreibst, dass dies nicht so ist, hilft mir das auch weiter. 👍

Ich dachte nur, dass evtl. ein XAML-Binding wie SelectedValuePath="{Binding ComboBox.Content}" oder so ähnlich geht.

Evtl. hat ja noch jemand eine einfache Idee?

Gruß

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

1.552 Beiträge seit 2010
vor 12 Jahren

finde ich es aber als zu viel Overhead, noch eine Liste oder Observable Collection zu erstellen.

Nein, ich finde ich nicht.

Ich dachte, es geht in diesem Fall sogar einfacher

Ich kann nicht erkennen wie das manuelle Updaten der ComboBox einfacher sein soll. Zusätzlich dürfen dann anfänglich die Items nicht mit ItemsSource hinzugefügt werden, sonden es muss mit einer Schleife jedes einzeln mit Items.Add hinzugefügt werden.

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 12 Jahren

Hallo Michael,

naja, die ObservableCollection mit den Einträgen bleibt ja dann die ganze Zeit zusätzlich im Speicher.

Die Schleife wäre bei mehreren Jahresangaben im Combo trotzdem notwendig um die Observable Collection zu füllen.

Aber im Prinzip hast Du schon recht. Und da ich ohnehin lieber nach einem gleichartigen Schema vorgehe, werde ich es wohl in das Binding an eine Liste ändern.

Vielen Dank nochmals! 👍

Gruß

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

1.552 Beiträge seit 2010
vor 12 Jahren

Die Schleife wäre bei mehreren Jahresangaben im Combo trotzdem notwendig um die Observable Collection zu füllen.

Theoretisch schon (.NET intern), praktisch (für dich) nicht:

ObservableCollection<int> years = new ObservableCollection<int>(Enumerable.Range(2000,21)); //Jahresliste von 2000-2020

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 12 Jahren

Hallo Michael,

8o Wow! - dass ist ja wirklich heiß! 👍

Vielen Dank nochmals! Gehe nun auch über die Collection! Ist wirklich viel besser.

Grüße

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]