J'ai un problème avec la mise à jour du texte de la zone de texte à mon avis. J'ai vu d'autres threads mais je ne peux pas en trouver un qui soit proche de ma configuration.Le texte TextBox lié ne se met pas à jour
J'ai un modèle avec une classe de
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"));
}
}
}
C'est ce que mon ViewModel ressemble
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 Configuration Reliure
// 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}"
Donc, si je lie à la personne Tout d'abord, tout fonctionne très bien. Si je lie à FirstName alors il mettra à jour mon modèle mais n'obtiendra pas les données pour le TextBox Text. Cela devient apparent quand je choisis un article dans ma liste.
Est-ce que quelqu'un a une idée pourquoi cela se produirait? Je veux pouvoir me lier au ViewModel Firstname et le faire passer à mon objet person.
Quel est votre DataContext? Selon le code je pense que son viewModel. Donc, si la propriété est modifiée dans Person, les clas viewModel ne seront pas notifiés si vous utilisez Just FirstName. Essayez donc de lancer PropertyChanged dans viewModel. –
Voici comment je fais mon DataContext public EmployeeAdministrationView (IEmployeeAdministrationViewModel vm): this() { DataContext = vm; } –
Je pense par hasard que j'ai juste supprimé le commentaire de quelqu'un. Je m'excuse. Ils m'avaient demandé mes donnéesContext –