Comment puis-je RaisePropertyChanged sur le changement de propriété?
Ici j'ai ajouté un modèle à mon viewmodel...
public dal.UserAccount User {
get
{
return _user;
}
set
{
_user = value;
RaisePropertyChanged(String.Empty);
}
}
J'ai la poignée de changement de propriété d'événement...
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
C'est la liaison que j'utilise.
<TextBox Text="{Binding User.firstname, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" />
Problème est événement propertychange n'est pas de déclenchement sur la mise à jour de la vue ? Quelqu'un peut-il me dire ce que je fais de mal...
Vous devez envoyer votre nom de variable à son paramètre au lieu de
string.Empty
. Vous pouvez prototype de votre RaisePropertyChanged
méthode void RaisePropertyChanged([CallerMemberName] string propertyName = null)
et de l'envoyer à elle n'a pas de paramètres, de sorte que votre nom de l'appelant seront utilisés pour que la valeur d'un paramètre.OriginalL'auteur A.T. | 2013-03-06
Vous devez vous connecter pour publier un commentaire.
PropertyChanged est utilisé pour notifier l'INTERFACE utilisateur que quelque chose a été changé dans le Modèle.
Puisque vous êtes à la modification d'un intérieur de la propriété de la Utilisateur objet - la
User
de la propriété elle-même n'est pas modifié et, par conséquent, l'événement PropertyChanged n'est pas soulevée.Deuxième votre Modèle devraient mettre en œuvre le INotifyPropertyChanged interface. En d'autres termes, assurez-vous que
UserAccount
implémente INotifyPropertyChanged, en modifiant lefirstname
ne sera pas affecter la vue.Autre chose:
Le paramètre RaisePropertyChanged devrait recevoir le Nom de la propriété a changé. Donc dans votre cas:
Changement:
RaisePropertyChanged(String.Empty);
D'
RaisePropertyChanged("User");
De MSDN:
(Pas besoin d'actualiser toutes les Propriétés dans ce cas)
Vous pouvez en lire plus sur le concept de PropertyChanged ici
oui je n'ai ajouté que 🙂
Merci de lire ma réponse mis à jour
en passant chaîne vide ou null en avisera toutes les propriétés de la vue modèle a changé...je crois que oui...
c'est correct, mais pourquoi voudriez-vous tous les liaisons dans votre VM pour actualiser en raison d'une seule propriété?
OriginalL'auteur Blachshma
Vous pouvez appeler une propriété événement a changé à partir d'une autre classe. Pas particulièrement utile si vous disposez de toutes les sources. Pour le code source fermé, il pourrait être. Bien que je ne considère pas ça expérimentales et pas prêt pour la production.
Voir cette console copier coller exemple:
OriginalL'auteur Mike de Klerk