Событие WPF TextBox DoubleClick Возникает при быстром использовании полос прокрутки - PullRequest
2 голосов
/ 10 августа 2009

У меня есть текстовое поле WPF, определенное так:

<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" />

Это работает именно так, как я хотел бы; однако, когда VerticalScrollBars видимы, если вы быстро щелкаете ScrollBar, вызывается событие txtComments_MouseDoubleClick. Можно ли как-то изменить это поведение или обнаружить, что событие было запущено, щелкнув ScrollBar вместо тела текстового поля?

Основная причина, по которой я хочу это сделать, заключается в том, что если вы попытаетесь прокрутить вниз, дважды щелкнув полосы прокрутки, произойдет событие, которое заставит приложение пойти по этому пути, что очень раздражает, если это не пользователи предполагаемое действие.

1 Ответ

12 голосов
/ 10 августа 2009

В вашем обработчике двойного щелчка отметьте свойство OriginalSource в MouseButtonEventArgs . Этот источник скажет вам, была ли это фактическая полоса прокрутки (кнопка повтора) или текстовое поле. Что-то вроде:

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