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 degli eventi nei Web component HTML
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Fornire parametri ad un Web component HTML
Utilizzo delle stepped value functions nel CSS
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Integrare LLM alle nostre applicazioni in .NET con MCP
Esporre un server MCP esistente con Azure API Management
Mischiare codice server side e client side in una query LINQ con Entity Framework
Generare una User Delegation SAS in .NET per Azure Blob Storage
Le cron expression di un workflow di GitHub
Abilitare automaticamente il force push di un gruppo su Azure DevOps


