在樣式設定器中加入混合行為
為按鈕建立自訂混合行為時,為應用程式中的所有按鈕設定它可能具有挑戰性。使用內聯 XAML,您可以將特定行為與單一物件關聯。但是,當透過可套用於多個目標的樣式設定行為時,這種方法會遇到限制。
在樣式中設定行為的問題
主要問題是行為和觸發器與特定物件內在相關。使用內聯 XAML 時,XAML 會強制執行這種一對一關係。但是,在樣式中定義行為會破壞此原則,因為樣式可以在多個目標中重複使用。這會導致基礎行為類別異常。
此外,與互動相關的「Behaviors」屬性的存取權限受到限制,阻止我們透過樣式設定值。
解決方案:使用自訂觸發器和行為集合
為了應對這些挑戰,開發人員設計了一種利用自訂行為和觸發器集合類別的解決方案。這些類別使我們能夠在樣式中建立和修改行為。
此解決方案背後的關鍵原則集中在:
範例實作
以下程式碼範例示範如何實現此解決方案:
<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>
此範例說明如何在樣式中將自訂行為和觸發器套用至多個文字區塊,同時保持正確的 資料綁定和訊息產生。
以上是如何使用 XAML 中的樣式為多個物件有效新增混合行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!