Nell'SDK di Expression Blend, in particolare nell'assembly Microsoft.Expression.Interactions.dll, possiamo trovare la classe DataTrigger: una implementazione della classe TriggerBase<T> molto utile per eseguire alcune azioni a seguito del cambiamento di una proprietà dell'entità in binding, il tutto direttamente da markup.
Per utilizzare una classe TriggerBase possiamo impiegare la classe Interaction presente nell'assembly System.Windows.Interactivity.dll, presente anch'esso nelle librerie dell'SDK di Blend, dopo aver dichiarato i rispettivi namespace nel markup:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
Possiamo utilizzare la classe Interaction all'interno del markup di un oggetto o di un controllo, per gestire un trigger valorizziamo la proprietà Triggers con un oggetto DataTrigger, come nell'esempio seguente:
<i:Interaction.Triggers>
<ei:DataTrigger Binding="{Binding IsChanged}"
Comparison="Equal"
Value="True">
<ei:ControlStoryboardAction Storyboard="{StaticResource Storyboard1}"
ControlStoryboardOption="Play" />
</ei:DataTrigger>
<ei:DataTrigger Binding="{Binding IsChanged}"
Value="False">
<ei:ControlStoryboardAction Storyboard="{StaticResource Storyboard2}" />
</ei:DataTrigger>
</i:Interaction.Triggers>Con la proprietà Binding definiamo la proprietà dell'entità su cui mettiamo in ascolto il DataTrigger, al cambiamento del valore della stessa viene eseguito una comparazione, secondo il criterio impostato con la proprietà Comparison con il valore definito dalla proprietà Value.
Nel caso i due valori corrispondano viene eseguito l'oggetto TriggerAction definito all'interno del DataTrigger stesso, nell'esempio precedente si tratta del ControlStoryboardAction.
Per eseguire azioni diverse per valori diversi della proprietà in binding possiamo definire più DataTrigger sulla stessa proprietà dell'entità, sempre all'intero della proprietà Triggers di Interaction.
L'oggetto ControlStoryboardAction non fa altro che eseguire uno Storyboard che nell'esempio è definitovengono definiti come StaticResource ma che possono essere dichiarati anche direttamente inline.
Oltre ad esso abbiamo a disposizione, inclusi nell'SDK, le seguenti implementazioni di TriggerAction:
- CallMethodAction
- HyperlinkAction
- PlaySoundAction
- InvokeCommandAction
L'oggetto DataTrigger può essere applicato in tutti i contesti in cui si ha a disposizione una entità in binding, compreso un DataTemplate.
Nell'esempio allegato è possibile vedere un esempio in cui viene associato ad un CellTemplate di un DataGridTemplateColumn di un DataGrid, in modo che venga eseguita una animazione ad un elemento a seguito del cambiamento del suo valore.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eliminare record doppi in Sql Server
Evitare la compressione degli artefatti in un workflow di GitHub
Gestire pubblicazione Kubernetes tramite .NET Aspire
Integrare un servizio esterno con .NET Aspire
Gestione delle issue type con GitHub
Integrare Agenti A2A in Azure API Management
Ottimizzare la content-visibility in CSS specificando lo spazio da occupato dall'area non renderizzata
Realizzare un accordion con gli elementi HTML details e summary
Configurare OpenAI in .NET Aspire
Ricerca delle GitHub issue tramite operatori logici
Eseguire query in contemporanea con EF
Integrare OpenAI tramite Aspire
I più letti di oggi
- Future Dev Day - Milano
- Chiedilo ai tuoi dati: Fabric Data Agents in azione
- Community Days 2018: Web Day - Milano
- .NET Conference Italia 2023 - Milano e Online
- Global Azure 2026 - ASPItalia.com - Milano
- Disponibile la versione November 2008 del Silverlight Toolkit
- MIX 2011: tutte le novità in diretta da Las Vegas
- Le migliori applicazioni Open Source per il web




