WPF文本框双击事件在快速使用滚动条时触发

3

我有一个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事件。有没有办法改变这种行为或检测到事件是通过单击滚动条而不是文本框主体触发的?
我想这样做的主要原因是,如果您尝试通过双击滚动条向下滚动,将触发事件,导致应用程序按照那个路径前进,如果这不是用户预期的操作,则非常恼人。
1个回答

13

在你的双击事件处理程序中,检查 MouseButtonEventArgs 上的 OriginalSource 属性。该源将告诉您是实际滚动条(重复按钮)还是文本框。类似这样:

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

我也感谢你的帮助!顺便说一下,我将TextBox修改为TextBlock,希望这能对其他人有所帮助。 - ccalboni
沙卡拉卡炸药爆炸了。谢谢,这正是我在寻找的。 - ElMatador

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接