У меня проблема с обновлением текста в текстовом поле, на мой взгляд.Я видел некоторые другие темы, но не могу найти ту, которая близка к моей настройке.
У меня есть модель с классом
interface IPerson : INotifyPropertyChanged
{
string FirstName { get; set;}
}
public class Person
{
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private string _firstName;
public string FirstName
{
get {return _firstName;}
set
{
_firstName = value;
PropertyChanged(this , new PropertChangedEventArgs("FirstName"));
}
}
}
Вот так выглядит моя модель представления
interface IViewModel : INotifyPropertyChanged
{
string FirstName { get; set;}
IPerson Person { get; set; }
}
public class viewModel : IViewModel
{
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private IPerson _person;
public Person Person
{
get {return _person;}
set
{
_person = value;
PropertyChanged(this , new PropertyChangedEventArgs("Person"));
}
}
public string FirstName
{
get {return Person.FirstName;}
Set
{
Person.FirstName = value;
PropertyChanged(this , new PropertChangedEventArgs("FirstName"));
}
}
}
Настройка привязки Xaml
// If i use this binding my model will get updated but my textbox text will never show what the value is in the model
Text="{Binding Path=FirstName ,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay,diag:PresentationTraceSources.TraceLevel=High}"
// This binding works fine both ways
Text="{Binding Path=Person.FirstName ,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay,diag:PresentationTraceSources.TraceLevel=High}"
Так что, если я связываюсь с Person.First Name все работает отлично.Если я свяжусь с FirstName, он обновит мою модель, но не получит данные для TextBox Text.Это становится очевидным, когда я выбираю элемент в своем списке.
У кого-нибудь есть идеи, почему это произойдет.Я хочу иметь возможность связываться с именем ViewModel и просто передать его моему объекту person.