Question

J'utilise Caliburn et le modèle MVVM dans une application WPF et j'essaie d'utiliser autant de conventions que possible.Un problème que je suis en cours d'exécution est lorsque je dois méfier certaines notifications de la propriété-modifiées sur une classe importée.

Dis que j'ai une vue de vue comme si:

class ViewModelA
{
    private readonly IViewModelB _b;

    public ViewModelA(IViewModelB b)
    {
        _b = b;
    }

    public bool CanGo
    {
        get { return _b.MyBoolProperty; }
    }

    public void Go()
    {
        //Does something here
    }
}

Quel est le moyen recommandé (correct) d'appeler notifierofpropertychange (()=> CANGO) lorsque l'événement de l'état de propriété pour MyboolProperty est tiré sur ViewModelb?

Dans le passé, j'ai utilisé une classe de type de propriété pour le gérer.

ou suis-je en train de concevoir ce scénario complètement faux?

Était-ce utile?

La solution

Si votre "SUB" -Model est exposé avec une propriété publique, vous pouvez utiliser des dépendancesAttribuer pour suivre les modifications:

 
class ViewModelA
{
    public IViewModelB B {get; private set;}

    public ViewModelA(IViewModelB b)
    {
        B = b;
    }

    public bool CanGo
    {
        get { return B.MyBoolProperty; }
    }

    [Dependencies("B.MyBoolProperty")]
    public void Go()
    {
        //Does something here
    }
}

Pour fonctionner correctement, tout le chemin de la propriété doit être composé de notification d'objets. Vous pouvez également mettre une finale "*"

[Dependencies("B.*")]

Pour indiquer que toutes les propriétés de B devraient causer la réévaluation de la condition préalable;Notez que "*" n'agit que à la fin du chemin de proprateur et juste pour un niveau de profondeur (elle ne suit pas les modifications des sous-modèles de B).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top