Maison >développement back-end >C++ >Comment appliquer des comportements de fusion à plusieurs objets à l'aide de paramètres de style en XAML ?

Comment appliquer des comportements de fusion à plusieurs objets à l'aide de paramètres de style en XAML ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-10 10:35:41417parcourir

How to Apply Blend Behaviors to Multiple Objects Using Style Setters in XAML?

Ajouter un comportement de fusion dans le sélecteur de style

Question :

Vous souhaitez utiliser le paramètre de style pour définir le comportement de fusion de tous les boutons de votre application. Cependant, vous rencontrez l'erreur « La propriété « Comportements » n'a pas de paramètre accessible ».

Solution :

Le principal défi ici est que les comportements sont associés à des objets spécifiques et que la même instance de comportement ne peut pas être utilisée pour plusieurs objets. De plus, les propriétés attachées au comportement n’ont pas de paramètres et ne peuvent être ajoutées qu’en ligne.

Pour surmonter ces limitations :

  • Définissez votre comportement et déclenchez des classes de collecte.
  • Créez des propriétés attachées personnalisées pour manipuler le comportement principal et les propriétés de déclenchement.
  • Définissez l'attribut x:Shared sur False afin qu'une nouvelle copie soit créée à chaque fois que la ressource est référencée.
  • Profitez de la nature additive des comportements et des déclencheurs en ajoutant des propriétés de comportement et de déclencheur au lieu de les remplacer.

Voici un exemple utilisant cette méthode :

<code class="language-xml"><Grid>
    <Grid.Resources>
        <String x:Key="stringResource1">stringResource1</String>
        <Triggers x:Key="debugTriggers" x:Shared="False">
            <EventTrigger EventName="MouseLeftButtonDown">
                <DebugAction Message="DataContext: {0}" MessageParameter="{Binding}" />
                <DebugAction Message="ElementName: {0}" MessageParameter="{Binding Text, ElementName=textBlock2}" />
                <DebugAction Message="Mentor: {0}" MessageParameter="{Binding Text, RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}}" />
            </EventTrigger>
        </Triggers>
        <Setter Property="local:SupplementaryInteraction.Triggers" Value="{StaticResource debugTriggers}" />
    </Grid.Resources>
    <StackPanel DataContext="{StaticResource stringResource1}">
        <TextBlock Name="textBlock1" Style="{StaticResource debugBehavior}" Text="textBlock1" />
        <TextBlock Name="textBlock2" Style="{StaticResource debugBehavior}" Text="textBlock2" />
        <TextBlock Name="textBlock3" Style="{StaticResource debugBehavior}" Text="textBlock3" />
    </StackPanel>
</Grid></code>

Cette approche vous permet d'appliquer des comportements et des déclencheurs à plusieurs objets via des paramètres de style, ce qui facilite la réutilisation des fonctionnalités comportementales communes dans votre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn