Gestire il doppio click con ClickCount e Command in MVVM con Silverlight 5.0

di Alessio Leoncini, in Silverlight 5.0,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi