2016-08-06 41 views
0

Ich habe eine Textbox zu einem Listenfeld gebunden:Bindungskette zwischen Textbox, listbox, beobachtbaren Sammlung nicht funktioniert

<TextBox Text="{Binding ElementName=PasswordsBox, Path=SelectedItem, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="1" Name="PasswordBox"/> 
<ListBox ItemsSource="{Binding Processor.Passwords,ValidatesOnDataErrors=True,Mode=TwoWay}" Name="PasswordsBox" Grid.Row="1"/> 

und eine Schaltfläche, die den Inhalt der Textbox auf der Liste hinzufügt, die das Listenfeld gebunden ist to:

<Button Grid.Row="1" Grid.Column="3" Command="{Binding AddPasswordCommand}" CommandParameter="{Binding Text, ElementName=PasswordBox}">+</Button> 

wird der Befehl wie folgt definiert:

_addPasswordCommand = new DelegateCommand<string>((newPass) => Processor.Passwords.Add(newPass)); 

Hier werden die „Pas ist Schwerter "Kollektion aus dem Modell:

public ObservableCollection<string> Passwords 
    { 
     get 
     { 
      return _passwords; 
     } 
     set 
     { 
      if (_passwords != value) 
      { 
       _passwords = value; 
       OnPropertyChanged("Passwords"); 
      } 
     } 
    } 

Aber ich kann nicht einmal etwas in den Text eingeben. Wenn ich ein leeres Element mit dem Befehl hinzufüge und es auswähle, kann ich es nicht bearbeiten.

Antwort

0

Ihre Textbox muss auf eine Eigenschaft von ListBox SelectedItem, so etwas wie dieses

<TextBox Text="{Binding ElementName=PasswordsBox, Path=SelectedItem.Password, Mode=TwoWay}" Grid.Column="1" Grid.Row="1" Name="PasswordBox"/> 

binden Da das ausgewählte Element des Typs Kennwort ist, und ich nehme dann Passwort Klasse eine Texteigenschaft in ihm hat.

+0

Die Passwords-Eigenschaft ist nur eine ObservableCollection . Hinweis: Im Falle meiner Bewerbung ist dies kein Sicherheitsproblem;) – R3turnz