In Silverlight 5 è stato aggiunto il supporto nativo al doppio click attraverso la proprietà ClickCount di MouseButtonEventArgs, parametro principalmente degli eventi MouseLeftButtonDown e MouseRightButtonDown.
In un contesto Model-View-ViewModel è possibile utilizzare comunque questa proprietà grazie alla possibilità offerta dal behavior EventToCommand del toolkit MVVM Light di Laurent Bugnion.
Questo behavior permette di invocare un Command a seguito di un qualunque evento di un oggetto, inoltre grazie alla proprietà PassEventArgsToCommand è possibile passare l'argomento del gestore dell'evento al Command, utile proprio allo scopo di passare il numero di click consecutivi.
... xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.SL4" ... <TextBlock Text="click"> <i:Interaction.Triggers> <i:EventTrigger EventName="MouseLeftButtonDown"> <cmd:EventToCommand Command="{Binding ClickCommand, Mode=OneWay}" PassEventArgsToCommand="True"> </cmd:EventToCommand> </i:EventTrigger> </i:Interaction.Triggers> </TextBlock>
Il Command ClickCommand può essere definito nel modo seguente:
private RelayCommand<MouseButtonEventArgs> clickCommand;
public RelayCommand<MouseButtonEventArgs> ClickCommand
{
get
{
return this.clickCommand ?? (this.clickCommand = new RelayCommand<MouseButtonEventArgs>(
(args) =>
{
var clickCount = args.ClickCount.ToString();
},
(args) =>
{
return true;
}));
}
}L'MVVM Light toolkit è scaricabile su Codeplex all'indirizzo http://mvvmlight.codeplex.com/.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Il nuovo persistent state in Blazor
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Centralizzare e governare MCP server e Skill con Azure API Center
Effettuare la ricerca di testo nascosto in una pagina web con Javascript
Interazione con ReconnectModal in Blazor
Creare un file Zip partendo da uno stream sfruttando le classi del namespace System.IO.Compression
How to be a DevOps engineer in the AI era
Breaking the Legacy Barrier: how to Use AI to Modernize Applications
Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
Proteggere l'endpoint dell'agente A2A delle Logic App
Validare i dati di una colonna JSON in SQL Server
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina


