2017-07-05 9 views
0

J'ai un Behavior<FrameworkElement> où j'inscris PreviewKeyDown et PreviewMouseLeftButtonDown. J'ai joint ce Behavior sur un MenuItem. Maintenant, quand je clique sur le MenuItem, parfois le ClickEvent est toujours invoqué et parfois non. C'est comme un problème de timing. Avez-vous des suggestions pour résoudre ce problème et arrêter d'invoquer le event?Gérer ClickEvent par PreviewMouseLeftButtonDown dans Behaviour <FrameworkElement>

protected override void OnAttached() 
{ 
    base.OnAttached(); 
    AssociatedObject.PreviewKeyDown += _OnPreviewKeyDown; 
    AssociatedObject.PreviewMouseLeftButtonDown += _OnPreviewMouseLeftButtonDown; 
} 

private void _OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs mouseButtonEventArgs) 
{ 
    if (!_HasAccess()) 
     mouseButtonEventArgs.Handled = true; 
} 

private void _OnPreviewKeyDown(object sender, KeyEventArgs keyEventArgs) 
{ 
    if (!_HasAccess()) 
     keyEventArgs.Handled = true; 
} 
+0

'FrameworkElement' n'a pas de' ClickEvent'. Je veux attacher ce «comportement» à n'importe quel «contrôle» que je veux et «contrôler» l'événement de clic. –

+0

Ce sera une sorte de "SecurityBehavior". Si l'utilisateur n'a pas la permission pour un contrôle ('Button',' MenuItem' ..), le 'clic' devrait être manipulé/bloqué et une sorte de" LoginPopup "est montrée. –

Répondre

0

Je devais aussi souscrire à AssociatedObject.PreviewMouseLeftButtonUp et mis handled = true. Maintenant j'ai le comportement désiré!