我在我的視圖中更新文本框文本時遇到問題。我已經看到一些其他線程,但無法找到一個接近我的設置。綁定的文本框文本不會更新
我有一類
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}"
所以,如果我綁定到人。名字一切都很好。如果我綁定到名字,那麼它會更新我的模型,但不會獲取文本框文本的數據。當我在列表中選擇一個項目時,這變得很明顯。
有沒有人有一個想法,爲什麼會發生這種情況。我希望能夠綁定到ViewModel Firstname,並讓它傳遞給我的person對象。
什麼是您的DataContext?根據代碼我認爲它的viewModel。因此,如果屬性在Person中更改那麼如果使用Just FirstName,則viewModel clas將不會收到通知。所以嘗試在viewModel中觸發PropertyChanged。 –
這就是我如何執行DataContext公共EmployeeAdministrationView(IEmployeeAdministrationViewModel虛擬機):this() DataContext = vm; } –
我認爲我意外地刪除了某人的評論。我很抱歉。他們問我dataContext –