Mischverhalten im Stilsetzer hinzufügen
Beim Erstellen eines benutzerdefinierten Mixin-Verhaltens für eine Schaltfläche kann es schwierig sein, es für alle Schaltflächen in Ihrer Anwendung einzurichten. Mithilfe von Inline-XAML können Sie einem einzelnen Objekt ein bestimmtes Verhalten zuordnen. Dieser Ansatz stößt jedoch auf Einschränkungen, wenn das Verhalten durch Stile festgelegt wird, die auf mehrere Ziele angewendet werden können.
Probleme beim Festlegen von Verhaltensweisen in Stilen
Das Hauptproblem besteht darin, dass Verhaltensweisen und Auslöser untrennbar mit bestimmten Objekten verknüpft sind. Bei Verwendung von Inline-XAML erzwingt XAML diese Eins-zu-eins-Beziehung. Allerdings verstößt die Definition des Verhaltens in Stilen gegen dieses Prinzip, da Stile in mehreren Zielen wiederverwendet werden können. Dies führt zu zugrunde liegenden Verhaltensklassenausnahmen.
Darüber hinaus ist der Zugriff auf die „Verhalten“-Eigenschaften im Zusammenhang mit Interaktionen eingeschränkt, sodass wir keine Werte über Stile festlegen können.
Lösung: Benutzerdefinierte Trigger und Verhaltenssammlungen verwenden
Um diese Herausforderungen zu bewältigen, haben die Entwickler eine Lösung entwickelt, die benutzerdefinierte Verhaltensweisen und Trigger-Sammlungsklassen nutzt. Diese Klassen ermöglichen es uns, Verhalten in Stilen zu erstellen und zu ändern.
Die Hauptprinzipien dieser Lösung konzentrieren sich auf:
Beispielimplementierung
Das folgende Codebeispiel zeigt, wie diese Lösung implementiert wird:
<code class="language-xml"><grid> <grid.resources> <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>
Dieses Beispiel zeigt, wie Sie benutzerdefinierte Verhaltensweisen und Auslöser auf mehrere Textblöcke in einem Stil anwenden und dabei die korrekte Datenbindung und Nachrichtengenerierung beibehalten.
Das obige ist der detaillierte Inhalt vonWie füge ich mithilfe von Stilen in XAML effektiv Mischverhalten zu mehreren Objekten hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!