Ich habe eine Combobox gebunden an eine Tabelle mit dem Namen Tenderness
über MVVM. Ich benutze Entity Framework. Es zeigt alle Datensätze ordnungsgemäß, aber ich muss eine andere Funktionalität hinzufügen. Angenommen der Benutzer tippt Text ein, der nicht in der Item-Quelle der Combobox enthalten ist, möchte ich ihn direkt zur Tabelle hinzufügen und dann auch die Item-Quelle aktualisieren können. Jetzt konnte ich das ohne MVVM machen, ich würde gerne wissen, wie ich es mit MVVM erreichen kann.Hinzufügen von Combobox Text zu ItemQuelle
Antwort
Machen Sie einfach das, was Sie zuvor im LostFocus
Event-Handler im Setter einer Quelleigenschaft getan haben, die Sie an die -Eigenschaft von ComboBox
binden.
Ansicht Modell:
public ObservableCollection<string> Items { get; } = new ObservableCollection<string>() { "a", "b", "c" };
private string _text;
public string Text
{
get { return _text; }
set
{
_text = value;
OnPropertyChanged(nameof(Text));
//add the missing value...
if (!Items.Contains(_text))
Items.Add(_text);
}
}
private string _selectedItem;
public string SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
OnPropertyChanged(nameof(SelectedItem));
}
}
Ausblick:
<ComboBox IsEditable="True" Text="{Binding Text, UpdateSourceTrigger=LostFocus}" ItemsSource="{Binding Items}"
SelectedItem="{Binding SelectedItem}" />
Ja, das fügt der ObservableCollection den neuen hinzugefügten Text hinzu, wie füge ich ihn nun zur Datenbank hinzu? –
Das ist eine ganz andere Frage. Aber Sie tun es genau wie zuvor in Ihrem LostFocus-Ereignishandler. Sie haben gefragt, wie Sie dies mit MVVM erreichen können, und das wurde beantwortet. – mm8
Danke! Kann ich jedoch ein Ereignis auslösen, wenn die ObservableCollection geändert wird und die neuen Elemente der Entität hinzugefügt werden? –
- 1. Wie aktualisiert man eine Bindung der Itemquelle einer Combobox programmatisch?
- 2. C# ComboBox Elemente hinzufügen als Benutzer Text
- 3. Hinzufügen von Elementen zu einer DataGridView ComboBox
- 4. Delphi Hinzufügen von Elementen zu ComboBox Geschwindigkeit
- 5. Wert von Combobox zu mehreren Spalten hinzufügen
- 6. Hinzufügen von Array-Elementen zu einer ComboBox
- 7. Hinzufügen von Combobox zu DataGridView-Headern
- 8. Hinzufügen von Elementen zu Combobox in WPF
- 9. Wie zu lange Text in WPF ComboBox
- 10. Hinzufügen von Text zu Kugeloberfläche
- 11. Hinzufügen von Text zu UIImage
- 12. c gtk + -2 glade3: Hinzufügen von Text zu einer Combobox geladen von Gtk Builder
- 13. Hinzufügen von Kontrollkästchen zu ComboBox in Dropdown nicht sichtbar
- 14. Clear ComboBox ausgewählten Text
- 15. Wie man den Wert von Combobox hinzufügen
- 16. Combobox Dropdown-Anzeige anders als Combobox-Text
- 17. Text in eine Combobox mit einer Datenquelle Hinzufügen
- 18. C# hinzufügen Zeile zu einem Datagrid Combobox
- 19. Alle ausgewählten Werte von ComboBox hinzufügen
- 20. Combobox ist kein Mitglied von System.Windows.Forms.Form, Hinzufügen von Elementen zu Combobox aus Modul
- 21. Text zu Besprechungsanfragen hinzufügen
- 22. Wie kann ich Text aus Textfeld in die Combobox hinzufügen?
- 23. Übergeben von Text an eine Combobox VB6
- 24. hinzufügen Combobox zum Hauptfenster
- 25. Ausblenden von Text in der ComboBox
- 26. Anordnen von Text in der ComboBox
- 27. hinzufügen comboBox in Spaltenkopf
- 28. Hinzufügen ComboBox Artikel
- 29. Hinzufügen von Combobox-Elementen zu dynamisch hinzugefügten Steuerelementen
- 30. Hinzufügen von Enum-Werten zu einer einfachen Combobox
Könnten Sie bitte zeigen, wie Sie "in der Lage gewesen, dies zu tun, ohne MVVM"? – mm8
Fügen Sie einen Delegierten 'Lost Focus' Event-Handler zum Textbox-Teil der Combox hinzu, prüfen Sie den aktuellen Text, wenn er in den Combobox-Elementen enthalten ist, überspringen Sie ihn, fügen Sie ihn sonst zur Datenbank hinzu und aktualisieren Sie die Elemente der Combobox. –