Comment m'abonner à l'événement PropertyChanged dans mon ViewModel?
J'ai fonctionnalités de base encapsulée dans ViewModelBase
Maintenant, je veux voir lors de l'événement PropertyChanged a été soulevée par ViewModelBase et d'agir sur elle. Par exemple, lorsqu'un bien a été changé sur ViewModelBase - je veux changer la propriété sur mon ViewModel
Comment puis-je y parvenir?
public class MaintainGroupViewModel : BaseViewModel<MEMGroup>
{
public abstract class BaseViewModel<T> : NotificationObject, INavigationAware
where T : Entity
{
source d'informationauteur katit
Vous devez vous connecter pour publier un commentaire.
Je crains que vous êtes en fait un "manuel de liaison" (mal) pour une propriété dans une classe dérivée de la valeur de la classe de base (bad). Le point de l'ensemble de l'utilisation de l'héritage, c'est que la classe dérivée peut accéder à des choses dans la classe de base. Utiliser un
protected
modificateur pour indiquer les choses ne devraient être accessibles aux classes dérivées.Je suggère que c' (potentiellement) plus correcte de la méthode:
De la classe de Base:
Classe dérivée:
Vraiment, l'inscription à un événement dans la classe de base de la très classe vous écrivez juste semble incroyablement en arrière - ce qui est le point de l'utilisation de l'héritage sur la composition si vous allez à composer vous-même autour de vous? Vous êtes littéralement en demandant un objet à dire lui-même quand il se passe quelque chose. Un appel de méthode est que vous devez utiliser pour cela.
En termes de "lorsqu'un bien a été changé sur ViewModelBase - je veux changer la propriété sur mon ViewModel"... ils sont le même objet!
D'habitude j'utilise le registre de la
PropertyChanged
événement dans le Constructeur de la classe deet mon événement PropertyChanged gestionnaire ressemble à ceci:
Le chemin direct pour vous abonner à des modifications de la propriété est à l'aide de
INotifyPropertyChanged
si votreBaseViewModel
la met en œuvre:Si elle ne le fait pas, il doit être un
DependencyObject
et vos propriétés doivent êtreDependencyProperties
(qui est probablement une plus compliqué).Cet article décrit la façon de s'abonner pour
DependencyProperty
changements.