Je suis nouveau dans Silverlight.
Lorsque j'ajoute un certain contrôle à mon fichier XAML avec Visual Studio Il définit le nom de contrôle avec la propriété Nom, mais il y a aussi x: nom.
Y a-t-il une différence et quand utiliser chacun d'eux?
Merci. P>
3 Réponses :
Non, vous ne pouvez tout simplement pas les utiliser tous les deux. X: Nom est ce que le préprocesseur XAML utilise et nommer réellement une propriété de convance fournie sur la classe Frameworment pour la définir. P>
du Référence MSDN : < / p>
Si le nom est disponible en tant que propriété sur un élément, nom et x: nom peut être utilisé de manière interchangeable, mais un résultat d'erreur si les deux attributs sont spécifiés sur le même élément. em> p>
oui il y a une différence. La première ligne est que Vous ne pouvez utiliser que le nom code> sur un élément qui représente un objet qui dispose d'un nom code> nom code>. Par exemple, tout ce qui provient de L'attribut Lorsqu'un objet a un nom code> nom code> Propriété ou un Le code Autogenerated pour un exemple fort> p>
p> Le xaml ci-dessus crée deux champs ouvrir la définition de x: nom code> peut être utilisé sur des éléments d'objet qui n'ont pas
nom code> propriétés de leur propre. P>
FramewradeMement code>. P>
x: nom code> peut être placé sur n'importe quel élément qui représente un objet peu importe Strong> de savoir si cet objet dispose d'une propriété code> nom code>. Si l'objet a une propriété code> nom code>, la valeur de
x: nom code> sera attribuée à celle que vous ne pouvez pas avoir à la fois
x: nom code > et
nom code> sur le même élément. p>
x: nom code> Propriété La valeur de cette propriété est associée à l'entrée d'objets dans l'arborescence d'objets. C'est via l'arborescence d'objets que le
FindName code> méthode d'un
FrameworkElement code> peut trouver un objet.
FINDNAME CODE> peut trouver des objets par nom même si cet objet ne porte pas un nom code> propriété code> de son propre car il utilise le nom enregistré dans l'arborescence d'objets. P>
USERCONTROL code> contiendra les définitions de champs pour tout élément qui comporte un nom code> ou
ou
x: nom code> propriété. La méthode code> initialisecomponent code> générée utilisera la méthode code> FindName code> pour affecter des valeurs à ces champs. p>
Layoutrooot code> de type
grille code> et
myBrush code> de type
SolidColorBrush code> . Si vous deviez changer
x: nom = "Layouroto" code> à
nom = "Layouroto" code> qui ne changerait rien.
grille code> a un nom code> propriété code>. Toutefois, essayez de changer
x: nom = "myBrush" code> sur
nom = "myBrush" code>. Cela ne fonctionne pas car
solidcolorbrush code> n'a pas de propriété de nom. Avec le XAML ci-dessus, vous pouvez alors faire du code comme celui-ci: - p>
initializececomponent code> et examine le code généré automatiquement. p> p>
Donc, nous préférerions utiliser x: nom code> que
nom code> pour vous assurer que la nommée fonctionne tout le temps et nous nous demandons si le contrôle prend en charge la propriété de nom ou non. Ai-je raison?
@Nam: Oui, j'ai tendance à faire ça, cela aide également les choses à se cohérent.
Réponse courte: Si vous écrivez des affaires dans XAML, il est probablement préférable d'utiliser X: Nom systématiquement. P>
Réponse longue: une réponse précédente mentionnée que le nom est une propriété "Convienience" pour accéder à X: Nom. C'est correct. Toutefois, maintenant que l'environnement des outils pour XAML dans Visual Studio et la série d'expressions a vraiment mûri et que vous voyez de plus en plus XAML généré sur des outils, vous voyez probablement de plus en plus x: nom par opposition au nom. Les outils préfèrent X: Nom Parce qu'ils ne prennent pas une dépendance quelque peu risquée (potentiellement spécifique au cadre) RE: Comment x: nom et nom sont vraiment identiques, et ils n'ont pas besoin de flipflop entre le nom de réglage si quelque chose Il se trouve être un frameworkElement, puis x: Nom sur quelque chose comme un storyboard et générer une dualité si vous deviez regarder cette xaml à travers quelque chose comme un DOM. En d'autres termes, l'attribut "nom" dans XAML est vraiment beaucoup moins "pratique" à utiliser de nos jours que d'avoir été conçu dans la conception de l'API d'origine. Une partie de la "commodité" était de ne pas avoir à mapper x :, mais vous devez le faire de toute façon pour X: classe et à peu près tout le monde est habitué à utiliser X: attributs et les principes généraux du balisage XAML efficacement. < / p>
Je ne suis pas sûr de la déclaration faite par l'affiche originale que VS encourage à l'aide du nom. Oui, nom apparaît comme une option IntelliSense, mais X: Nom. Et tous les cas que je vois dans les modèles où un objet reçoit un nom de départ utilise X: Nom même que la plupart d'entre eux sont des cadres terrestres. P>
en double possible de dans WPF, qu'est-ce que sont les différences entre les attributs x: nom et nom de nom?
Très proche, mais celui-ci était pour Silverlight, pas sûr qu'il soit important après 4 ans :)