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
Creare una libreria CSS universale: i bottoni
Ridurre il reflow ottimizzando il CSS
Collegare applicazioni server e client con .NET Aspire
Configurare lo startup di applicazioni server e client con .NET Aspire
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Configurare e gestire sidecar container in Azure App Service
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Combinare Container Queries e Media Queries
.NET Aspire per applicazioni distribuite
Creare una libreria CSS universale - Rotazione degli elementi
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
I più letti di oggi
- Sfruttare i nuovi overload di TimeSpan.From* per creare timespan usando numeri interi
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!