2017-08-18 3 views
0

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

+0

Könnten Sie bitte zeigen, wie Sie "in der Lage gewesen, dies zu tun, ohne MVVM"? – mm8

+0

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

Antwort

1

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}" /> 
+0

Ja, das fügt der ObservableCollection den neuen hinzugefügten Text hinzu, wie füge ich ihn nun zur Datenbank hinzu? –

+0

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

+0

Danke! Kann ich jedoch ein Ereignis auslösen, wenn die ObservableCollection geändert wird und die neuen Elemente der Entität hinzugefügt werden? –

Verwandte Themen