ich eine Immobilie von einem Objekt auf ein Steuerelement gebunden, aber die Eigenschaft wird nicht aktualisiert ...WPF Databinding auf eine Eigenschaft von einem Objekt
ich auf diese Weise Triedit:
ViewModelBase:
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Ansichtsmodell:
public class VIewModel : ViewModelBase
{
private Person _person;
public Person Person
{
get { return _person; }
set
{
_person = value;
OnPropertyChanged(nameof(Person));
}
}
}
Personclass:
public class Person
{
public string Name { get; set; }
public string FirstName { get; set; }
}
App.xamls.cs
protected override void OnStartup(StartupEventArgs e)
{
var viewModel = new VIewModel
{
Person = new Person{FirstName = "Dominik", Name = "Muster"}
};
var window = new MainWindow {DataContext = viewModel};
window.Show();
base.OnStartup(e);
}
Mainwindow:
<StackPanel>
<TextBox Text="{Binding Person.Name}"/>
<TextBox Text="{Binding Person.FirstName}" Width="200"/>
</StackPanel>
Wenn das Programm gestartet wird, wird der Wert der Textfelder sind der Wert des Kontakt-Objekt, aber wenn ich Ändern Sie den Text-Wert in das Textfeld, die Eigenschaft wird nicht aktualisiert ... irgendwelche Ideen?
Versucht das INotifyPropertyChanged in der Klasse Person zu implementieren? – CiccioRocca
Sie müssen das Ansichtsmodell darüber informieren, wann die Eigenschaften aktualisiert werden sollen. Fügen Sie also in Ihrer Bindung den UpdateSourceTrigger hinzu und legen Sie ihn auf PropertyChanged fest, und Ihre Eigenschaften geben den Wert in den Textfeldern wieder: Text = "{Binding Person.Name, UpdateSourceTrigger = PropertyChanged , Modus = TwoWay} –
@Sabrina_cs Ihre Lösung funktioniert nicht ... –