nouveau à mvvm alors s'il vous plaît excuser mon ignorance.
Je pense que je suis en train de l'utiliser à droite, mais je trouve que mon viewModel a trop d'entre eux: P>
public int SomeInteger { get; private set;}
5 Réponses :
Jetez un coup d'œil à cela Quelle est la meilleure ou la meilleure utilisation des méthodes d'extension que vous avez vues? .
Il décrit une méthode d'extension et une méthode d'assistance que mes classes de modèle et de mes classes de viewmodel utilisent pour permettre ce qui suit Propriétés fortement dactylographiées (pas de chaîne magique). P>
private string _name; public string Name { get { return _name; } set { this.NotifySetProperty(ref _name, value, () => this.Name); } }
Merci. Un peu heureux de savoir que je n'étais pas le seul à avoir des problèmes.
Il aide à regarder les choses d'une perspective différente: ce ne sont pas des propriétés compliquées .NET, mais des propriétés de dépendance simplifiées. p>
Les propriétés liées d'un modèle de vue dans WPF ne sont pas identiques à des propriétés .NET, mais il s'agit d'une sorte de magasin de valeur de clé. Si vous souhaitez une alternative légère à la dépendanceObject, vous avez la possibilité d'implémenter ce magasin de la valeur de clé juste acheter appeler certaines fonctions dans des setters - pas mal, réellement. Loin de l'idéal aussi, bien sûr, mais votre point de vue est certainement injuste. p>
Vous pouvez utiliser l'attribut notifyproperTychanged NOTIFYPROPERTYCHANGED de POSTSHARP. Ensuite, tout ce que vous avez à faire est de mettre un attribut sur la classe et c'est tout. E.G.:
[NotifyPropertyChanged] public class MyClass { public string MyProperty { get; set; } }
Il n'y a pas de frais générale d'exécution car PostSharp modifie simplement la classe compilée et injecte exactement le même code que vous écrivez manuellement. Il y a un petit temps de construction sur le dessus mais je l'ai trouvé négligeable.
Le seul inconvénient de cette approche est qu'il est parfois nécessaire de relancer de manière appropriée pour une propriété autre que celle où le setter est invoqué.
Disclaimer: PostSharp est le logiciel commercial et l'édition Starter (Gratuit) ne prend pas en charge cet attribut.
Utilisez une alternative supérieure et gratuite: les propriétés calculées de Steen Cleary. Github.com/stephencleary/calculéproperties/blob/master/... i Utilisé à la fois en production et il est beaucoup plus flexible que l'aspect postparp. Aucune des limitations postSharp ne s'applique aux propriétés calculées. Il peut filer des dépendances à partir de boucles, de méthodes virtuelles, de LINQ aux objets, essentiellement de toutes les dépendances d'exécution folle que vous pouvez imaginer à quel point le graphique de dépendance se retrousse indirecte, de dépendance se retrousse à l'exécution et travaille simplement sans cérémonie. Ils sont aussi rapides. Le code de la chaudière est également minime.
Il ne vous rappelle pas au code de nettoyage, mais j'utilise une méthode d'extension simple pour obtenir le nom de la propriété pour éviter les problèmes de chaînes magiques. Il conserve également la lisibilité du code, c'est-à-dire qu'il est explicite ce qui se passe.
La méthode de l'extension est simplement comme suit: p> avec ceci signifie que votre propriété signifie Les ensembles sont résilients contre les changements de noms et ressemblent aux éléments suivants: P> private string _name;
public string Name
{
get { return _name; }
set
{
name = value;
RaisePropertyChanged(MethodBase.GetCurrentMethod().GetPropertyName());
}
}
Vieille question, je sais :) Une autre façon consiste à encapsuler le SUPPROPERTYCHANGED à l'intérieur d'une classe de base et à utiliser la méthode suivante Signature: Onraisepropertychanged ([Callermembername] Nomname = ""). De cette façon, vous pouvez appeler la méthode sans avoir besoin d'écrire le nom de la propriété.
Cela aidera: "Type de magie" Sans effort inotifypropertychangned
[http://visualsturogallery.msdn.microsoft.com/d5cd6aa1-57a5-4aaaa-a2be-969c6db7f88a] [1] p>
Comme exemple de l'ajout à une propriété: p> Un autre exemple pour l'ajouter à toutes les propriétés de la classe: p>
"Les jours où je pouvais juste aller" à quel point nous oublions facilement, en C # 2, vous ne pouviez pas le faire du tout. ;)
Je suppose que je me suis gâché mais malgré les progrès réalisés, je pense toujours qu'il pourrait y avoir un moyen plus propre de mettre en œuvre ce genre de choses. Je ne connais pas assez les travaux intérieurs / compromis ...