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
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Implementare l'infinite scroll con QuickGrid in Blazor Server
Utilizzare Copilot con Azure Cosmos DB
Gestione dell'annidamento delle regole dei layer in CSS
Usare le navigation property in QuickGrid di Blazor
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Usare il colore CSS per migliorare lo stile della pagina
Supportare la sessione affinity di Azure App Service con Application Gateway
Utilizzare gRPC su App Service di Azure
Proteggere le risorse Azure con private link e private endpoints
Creare una libreria CSS universale: Nav menu
Generare la software bill of material (SBOM) in GitHub