6 votes

Est-il possible d'appliquer le comportement Blend à l'aide d'un style ou d'un modèle ?

Je suis très satisfait de ma petite collection de comportements, d'actions et de déclencheurs Blend - ils sont faciles à utiliser et puissants. Mais je n'arrive toujours pas à comprendre comment éviter de les appliquer à chaque élément. Par exemple, si j'ai un comportement tel que :

<Rectangle>
    <i:Interaction.Behaviors>
        <il:MouseDragElementBehavior/>
    </i:Interaction.Behaviors>
</Rectangle>

et j'ai quelques rectangles à déplacer dans ma fenêtre, chacun d'entre eux doit avoir la balise ci-dessus pour être déplaçable. Ce que j'aimerais faire, c'est pouvoir écrire quelque chose comme ceci :

<Style x:Key="RectangleStyle" TargetType="{x:Type Rectangle}">
    <Setter Property="i:Interaction.Behaviors" 
        Value="il:MouseDragElementBehavior"/>
</Style>

Il peut s'agir d'un style, d'un modèle ou d'un autre moyen d'éviter la répétition des balises de comportement ou d'action. La meilleure solution que j'ai trouvée jusqu'à présent est de créer un comportement spécial pour le conteneur (lorsqu'il est attaché, il énumère les enfants qui s'attachent aux événements des enfants). Des idées ?

3voto

julian Points 101

J'ai rencontré le même problème et j'ai publié sur mon blog sur la façon de créer une propriété attachée pour contourner cette lacune du SDK Blend.

1voto

Samuel Jack Points 14556

Je n'ai pas encore essayé, mais ce que je ferais probablement, c'est créer une propriété attachée qui peut contenir une collection de comportements. Dans le gestionnaire de changement de propriété de cette propriété, j'énumérerais la collection et ajouterais chacun des comportements à la vraie propriété Interation.Behaviors. C'est un peu compliqué, mais cela devrait fonctionner.

Mise à jour

Cette approche ne fonctionnera pas sans un travail supplémentaire : le problème est que les comportements et les déclencheurs ne peuvent être attachés qu'à un seul objet à la fois. C'est probablement la raison pour laquelle la limitation de leur application à l'aide d'un style existe en premier lieu. Pour que cela fonctionne, il faudrait créer une sorte de fabrique de déclencheurs ou de comportements.

0voto

Charlie Points 9880

Vous pouvez créer votre propre classe qui hérite de Rectangle et y appliquer le comportement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X