Comment puis-je lie événement MouseDoubleClick de wpfdatagrid dans la vue que j'utilise MVVM et Prism 2.événement MouseDoubleClick dans Voir
1
A
Répondre
-1
Écoutez l'événement MouseDoubleClick dans le code-behind de la vue et appeler la méthode appropriée sur le ViewModel:
public class MyView : UserControl
{
...
private MyViewModel ViewModel { get { return DataContext as MyViewModel; } }
private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
ViewModel.OpenSelectedItem();
}
2
Je préfère ajouter un MouseDoubleClickBehaviour et vous pouvez le joindre à tout contrôle, qui se liera à votre ViewModel. L'appel de commandes à partir du code-behind de View crée des dépendances directes que je n'aime pas.
public static class MouseDoubleClickBehaviour
{
public static readonly DependencyProperty CommandProperty =
DependencyProperty.RegisterAttached("Command", typeof(ICommand), typeof(MouseDoubleClickBehaviour), new UIPropertyMetadata(null, OnCommandChanged));
public static readonly DependencyProperty CommandParameterProperty =
DependencyProperty.RegisterAttached("CommandParameter", typeof(object), typeof(MouseDoubleClickBehaviour), new UIPropertyMetadata(null));
public static ICommand GetCommand(DependencyObject obj)
{
return (ICommand)obj.GetValue(CommandProperty);
}
public static void SetCommand(DependencyObject obj, ICommand value)
{
obj.SetValue(CommandProperty, value);
}
public static object GetCommandParameter(DependencyObject obj)
{
return obj.GetValue(CommandParameterProperty);
}
public static void SetCommandParameter(DependencyObject obj, object value)
{
obj.SetValue(CommandParameterProperty, value);
}
private static void OnCommandChanged(DependencyObject target, DependencyPropertyChangedEventArgs args)
{
var grid = target as Selector;
////Selector selector = target as Selector;
if (grid == null)
{
return;
}
grid.MouseDoubleClick += (a, b) => GetCommand(grid).Execute(grid.SelectedItem);
}
}
Ensuite, vous pouvez le faire dans votre XAML
<ListView ...
behaviours:MouseDoubleClickBehaviour.Command="{Binding Path=ItemSelectedCommand}"
behaviours:MouseDoubleClickBehaviour.CommandParameter="{Binding ElementName=txtValue, Path=Text}"
.../>
+0
Pourriez-vous ajouter un gestionnaire à un événement double clic de souris sur un objet qui n'était pas un sélecteur MouseDoubleClick sur un bloc de texte par exemple? –
Questions connexes
- 1. Comment appeler un événement MouseDoubleClick? WinForm
- 2. Comment lier l'événement MouseDoubleClick
- 3. Un clic ou un événement mouseDoubleClick Datagrid en utilisant un modèle MVVM.Est-ce possible?
- 4. Pourquoi le contrôle de bordure WPF ne possède-t-il pas un événement mousedoubleclick?
- 5. Android: délèguent événement tactile pour voir underlaying
- 6. wpf: Mousedoubleclick pour la zone de texte
- 7. voir l'état dans asp.net
- 8. poids Voir dans JGraphT
- 9. voir dans multiview timeout
- 10. Voir ram dans DOS
- 11. Aucun événement ItemChecked dans CheckedListBox?
- 12. Impossible de voir le problème dans JS
- 13. drupal voir comment trouver top un dans toute la catégorie
- 14. DataBinding dans une liste Voir
- 15. Voir les images dans SSMS?
- 16. Count enregistrements dans Liste Voir
- 17. Rails: Vérifiez has_many dans Voir
- 18. événement à ne pas rendu par jquery pour voir en asp.net mvc
- 19. événement clé dans Android
- 20. événement selectionindexchange dans Gridview
- 21. onBlur événement dans IE
- 22. Événement personnalisé dans Rebol
- 23. initialiser événement dans EKEventEditViewController
- 24. événement onmouseover dans jqGrid
- 25. Événement onClick dans VB.NET
- 26. Événement Application_Start() dans global.asax
- 27. Événement Visibility_notify dans pyGTK
- 28. Tirer un autre événement d'un événement
- 29. iPhone - Voir comme SMS Contacts voir
- 30. IceFaces accumuler voir le problème
Cela ne suit pas le modèle MVVM. –