creé el comportamiento de cuadrícula de datos para detectar haga doble clic en:Silverlight 5 Haga doble clic siempre devuelve ClickCount como 1
public class DataGridDoubleClickBehavior : Behavior<DataGrid>
{
public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register(
"CommandParameter",
typeof(object),
typeof(DataGridDoubleClickBehavior),
new PropertyMetadata(null));
public object CommandParameter
{
get { return GetValue(CommandParameterProperty); }
set { SetValue(CommandParameterProperty, value); }
}
public static readonly DependencyProperty DoubleClickCommandProperty = DependencyProperty.Register(
"DoubleClickCommand",
typeof(ICommand),
typeof(DataGridDoubleClickBehavior),
new PropertyMetadata(null));
public ICommand DoubleClickCommand
{
get { return (ICommand)GetValue(DoubleClickCommandProperty); }
set { SetValue(DoubleClickCommandProperty, value); }
}
protected override void OnAttached()
{
this.AssociatedObject.LoadingRow += this.OnLoadingRow;
this.AssociatedObject.UnloadingRow += this.OnUnloadingRow;
base.OnAttached();
}
protected override void OnDetaching()
{
this.AssociatedObject.LoadingRow -= this.OnLoadingRow;
this.AssociatedObject.UnloadingRow -= this.OnUnloadingRow;
base.OnDetaching();
}
private void OnLoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.MouseLeftButtonUp += this.OnMouseLeftButtonUp;
}
private void OnUnloadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.MouseLeftButtonUp -= this.OnMouseLeftButtonUp;
}
private void OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount < 2) return;
if (this.DoubleClickCommand != null) this.DoubleClickCommand.Execute(this.CommandParameter);
}
}
Todo parece estar bien, excepto que no se registra varios clics. En OnMouseLeftButtonUp
ClickCount siempre 1. ¿Alguien sabe por qué?
Como un par de verificaciones de cordura, quizás ejecute la muestra de Pete para validar que funciona y/o ejecute uno de los proyectos SL4 DataGrid + DoubleClick existentes como http://www.codeproject.com/Articles/115405/Double-Click -DataGrid-en-Silverlight? –
Lo que estoy haciendo es parte de la actualización de SL5. Deshacerse de este tipo de código ya que multi-clic en realidad "compatible" ... Tengo código de trabajo. Solo quiero hacerlo bien. – katit