2009-09-11 7 views
23

Assez souvent lorsque je reviens à Visual Studio à partir d'Expression Blend 3, je vois que Blend a utilement ajouté une propriété "d: LayoutOverrides" à mon XAML. En grandissant avec les concepteurs d'ASP.NET, je me méfie naturellement de tout ce que je ne voudrais pas me taper, alors retirez-les dès que je les vois. Je sais que les propriétés "d:" sont réservées au concepteur et n'ont aucune incidence sur l'exécution, mais quelqu'un peut-il nous donner un aperçu de ce que fait cette propriété et pourquoi Blend insisterait-il pour que je l'aie partout dans mon balisage?Pourquoi Blend ajoute [d: LayoutOverrides = "Height"] et devrais-je m'inquiéter?

<Border d:LayoutOverrides="Height" /> 

Répondre

31

C'est juste là pour que Blend sache comment afficher votre XAML en mode design. Plus précisément, si vous avez une disposition fluide qui s'étend pour remplir son conteneur, il n'y a pas de moyen évident pour Blend de savoir quelle devrait être la hauteur de votre design; LayoutOverrides définit cela.

Ces entrées de paramètres LayoutOverride sont ajoutées lorsque vous (ou une autre personne exécutant Blend) redimensionne manuellement les éléments dans la surface de conception. Si vous les voir tout votre code (comme dans un élément de frontière):

  1. Vous pouvez les supprimer généralement sans affecter
  2. noticable
  3. Vous pouvez regarder la façon dont vous utilisez Blend - en particulier, vous devez redimensionner le cotainer parent à une bonne taille (UserControl/LayoutRoot), puis définir les tailles des enfants en fonction de la disposition des fluides - par ex. remplissage et marge ou * tailles

Notez que les attributs ignorables de Blend sont supprimés au moment de la compilation et n'ont aucun effet sur les performances de votre application. Ainsi, bien que vous souhaitiez les supprimer pour améliorer la lisibilité du code, ils n'affectent pas le fonctionnement de votre application.

+1

réponse Excelent. – heltonbiker

+5

@jon Je ne comprends toujours pas! Je comprends parfaitement ce que d: DesignWidth = "500" fait, mais LayoutOverrides ne spécifie aucune dimension, alors qu'est-ce que ça fait exactement? Vous avez dit "LayoutOverrides définit cela", mais définit quoi? Si je redimensionne un composant dans Blend, il met seulement Hauteur, pas d: LayoutOverrides ou d: DesignHeight. Il semble être très répandu sur TextBlock mais je reste perplexe car je ne vois pas que cela affecte réellement quelque chose dans Blend d'une manière ou d'une autre: - / –

2

d: LayoutOverrides

Si une propriété est définie sur une valeur fixe lors de l'exécution, mais vous voulez la remplacer à designtime, vous pouvez utiliser le d: LayoutOverrides attribut. Toutes les propriétés qui devraient être ignorées au moment du design peuvent être listées, séparées par un point-virgule.

(source: http://wpftutorial.net/DesigntimeVsRuntime.html)

Questions connexes