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
Gestione ciclo di vita in .NET Aspire
Recuperare le subissue e il loro stato di completamento in GitHub
Utilizzare WhenEach per processare i risultati di una lista di task
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Gestione CSS in Blazor con .NET 9
Integrare un servizio esterno con .NET Aspire
.NET Aspire per applicazioni distribuite
Montare Azure Blob Storage su Linux con BlobFuse2
Triggerare una pipeline su un altro repository di Azure DevOps
Utilizzare DeepSeek R1 con Azure AI
Implementare il throttle in JavaScript
Fornire parametri ad un Web component HTML
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- .NET Conference Italia 2025 - Milano
- The Agentic Day - Milano
- Gestione ciclo di vita in .NET Aspire
- Estendere il numero di API utilizzabili nella Universal Windows Platform
- 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!