2009-08-10 6 views
2

J'ai un WPF TextBox, défini comme ceci:WPF TextBox DoubleClick événement se déclenche lors de l'utilisation Scrollbars rapidement

<TextBox Text="{Binding Path=/Comments}" 
    Margin="351,193.91,10,36" 
    x:Name="txtComments" 
    IsReadOnly="True" 
    VerticalScrollBarVisibility="Auto" 
    LostFocus="txtComments_LostFocus" 
    MouseDoubleClick="txtComments_MouseDoubleClick" 
    AcceptsReturn="True" /> 

Cela fonctionne exactement comme je le voudrais; Toutefois, lorsque les VerticalScrollBars sont visibles, si vous cliquez rapidement sur la barre de défilement, l'événement txtComments_MouseDoubleClick est déclenché. Est-il possible que je puisse modifier ce comportement ou détecter que l'événement a été déclenché en cliquant sur le ScrollBar au lieu du corps de la zone de texte? La raison principale pour laquelle je veux faire ceci est que si vous essayez de faire défiler vers le bas en double-cliquant sur les barres de défilement, l'événement est déclenché ce qui amène l'application à descendre ce chemin, ce qui est très ennuyeux si ce n'est pas le les utilisateurs ont l'intention d'agir.

Répondre

11

Dans votre gestionnaire double-cliquez sur, vérifiez la OriginalSource propriété sur les MouseButtonEventArgs. Cette source vous dira s'il s'agit de la barre de défilement réelle (le bouton de répétition) ou de la zone de texte. Quelque chose comme:

if (e.OriginalSource is TextBox) 
{ 
    // Do your stuff. 
} 
else 
{ 
    // From the scroll-bar. 
} 
+0

Un de moi aussi, merci! Note: J'ai dû modifier TextBox en TextBlock, peut-être que cela peut aider quelqu'un. – ccalboni

+0

Shaka Laka Boom va à la dynamite. Merci pour ce que je cherchais. – ElMatador

Questions connexes