Cela fait plus d'un an que j'ai écrit le dernier article. WPF est trop gros et il y a trop de choses à écrire. Je vais quand même me concentrer sur les contrôles personnalisés pour développer les points techniques qui s'y rapportent. Tout le monde est également invité à participer. dans la discussion. Nous discuterons de cet article. La chose la plus importante est les propriétés de dépendance de WPF. Les amis qui ont été en contact avec cela devraient en avoir une certaine compréhension, mais avant de parler des propriétés de dépendance de WPF, regardons comment les propriétés. dans .net étaient utilisés avant l’apparition de WPF.
Problèmes d'attributs courants
propriétés de base c#
Propriétés du contrôle personnalisé ASP.NET
Propriétés du contrôle personnalisé WinForm
Propriétés du contrôle personnalisé Javascript
propriétés de base c#
espace de noms WPFControlTutorialPart2_Basic
{
Personne de classe publique
{
chaîne privée _name ;
chaîne publique Nom
{
obtenir { return _name }
définir { _nom = valeur }
}
//propriétés automatiques
public int Âge { get ; set ;
}
}
Les éléments ci-dessus doivent être considérés comme les attributs les plus fondamentaux du C#, et tout le monde les connaît.
Remarque : Les propriétés par défaut ne sont pas initialisées, sinon de nombreuses erreurs inconnues peuvent se produire.
(Vous pouvez choisir de lire ce qui suit. Si vous avez été exposé aux technologies suivantes, c'est en fait très simple)
Propriétés du contrôle personnalisé ASP.NET
espace de noms WPFControlTutorialPart2_WebApp
{
classe publique WebFromControl : WebControl
{
chaîne privée _controlName ;
chaîne publique NomContrôle
{
obtenir
{
retourner _controlName ;
}
ensemble
{
_controlName = valeur ;
}
}
remplacement protégé void RenderContents (sortie HtmlTextWriter)
{
output.Write("Le nom du contrôle est :"+ControlName);
}
}
}
Ce qui précède est un simple contrôle de serveur Web personnalisé.
Le contrôle asp.net se concentre sur le rendu. La méthode RenderContents sera appelée à chaque fois que la page est actualisée, de sorte que peu importe si les propriétés ont changé ou non, elles seront restituées. Autrement dit, aucune propriété n'est nécessaire. modifications pour notifier le redessin de l’interface utilisateur.
Remarque : S'il est obligatoire que l'attribut ControlName ait une valeur pour garantir la validité du résultat d'entrée, elle peut être traitée dans la méthode get.
obtenir
{
if (_controlName == null) _controlName = string.Empty;
retourner _controlName ;
}
Propriétés du contrôle personnalisé WinForm
Lorsque la propriété change, elle n'est pas redessinée. Vous devez appeler manuellement la méthode Invalidate pour saisir la méthode OnPaint à redessiner.
Remarque : Si vous souhaitez redessiner l'interface, vous devez appeler manuellement la méthode
Propriétés du contrôle personnalisé JavaScript
<div id="demoDiv" style="background-color: Red">bonjour</div>
<script>
function ElementControl (nom de l'élément) {
this.element = document.getElementById(elementName);
}
ElementControl.prototype.setWidth = fonction (largeur) {
this.element.style.width = largeur ;
}
var obj = new ElementControl("demoDiv");
obj.setWidth("bonjour");
</script>
Les types de variables JavaScript n'ont pas de types forts. Par exemple, lors de la définition de la largeur de dom, le type ne peut être qu'un entier. Si la valeur est transmise sous forme de chaîne, une erreur se produira (bien sûr, cela est artificiel).
(Je ne sais pas si les personnes qui ont effectué des contrôles frontaux js ressentent cela. Définir une propriété, puis réaffecter et redessiner le contrôle est une chose douloureuse. Elle doit être ajustée manuellement et cela affectera l'ensemble de la conception du contrôle. )
Remarque : Vérifiez la validité des affectations d'attributs.
À partir des exemples ci-dessus, nous pouvons voir que les attributs purs ne peuvent pas répondre aux besoins du programme.
Les exigences ci-dessus sont nécessaires, se produisent souvent et sont très fréquentes.
Solutions standardisées
Ce qui précède présente une série de problèmes avec les attributs. S'il y a des problèmes, il y aura des solutions simplifiées.
Ce qui suit est un résumé personnel :
Lorsqu’une technologie est relativement complexe, quelqu’un viendra définir un ensemble de normes pour simplifier la technologie et améliorer l’efficacité de la production.
Même si le concepteur y réfléchit avec soin, une fois la norme définie, la flexibilité sera perdue.
Les normes peuvent entrer en conflit avec vos habitudes personnelles. Vous devez apprendre à accepter les normes et revenir au sujet WPF. Ensuite, la solution dans WPF est la propriété de dépendance (DependencyProperty).
D'accord, cet article n'est qu'une introduction. Si vous avez rencontré ces problèmes lors de l'utilisation des attributs, vous aurez quelques impressions.
Si vous réalisez que les problèmes ci-dessus existent réellement avec les attributs, alors cet article a rempli sa tâche.
Cet article n'est pas destiné à être développé. L'article suivant présentera à nouveau le système de propriétés de dépendance WPF.
Tout le monde est invité à discuter.