WPF TextBox DoubleClick Event срабатывает при быстром использовании полос прокрутки

У меня есть текстовое поле 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" />

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

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


person Nate    schedule 10.08.2009    source источник


Ответы (1)


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

if (e.OriginalSource is TextBox)
{ 
    // Do your stuff.
}
else
{
    // From the scroll-bar.
}
person Charlie    schedule 10.08.2009
comment
Еще один от меня, спасибо! Примечание: мне пришлось изменить TextBox на TextBlock, возможно, это кому-то поможет. - person ccalboni; 02.10.2009
comment
Шака Лака Бум взрывается динамитом. Спасибо за то, что я искал. - person ElMatador; 11.03.2014