将Panel中的MousePosition(当鼠标位于其他UIElement上时)获取到ViewModel

时间:2015-05-10 21:02:06

标签: c# wpf xaml mvvm

我再次提出一个可能很简单的问题:

我正在尝试在我的Scrollviewer中获取MousePosition:

[[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];

但是当我的鼠标超过其他UIElement时出现问题 - 源是UIElement而不是我的Scrollviewer - “错误”位置:

我现在可以做一个“CurrentMousePosition = e.GetPosition((IInputElement)e.OriginalSource); ”,但我也需要HitTest of the Elements。

XAML:

IsHitTestVisible="false"

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为在你完成任务之前:

CurrentMousePosition = e.GetPosition((IInputElement)e.OriginalSource);

当发件人属于不同类型时,您可以进行检查并快速退出:

var scollViewer = e.OriginalSource as ScrollViewer;
if(scrollViewer == null) return; //short circuit 
CurrentMousePosition = e.GetPosition(scrollViewer);

另外(抱怨唠叨),但听起来你的属性CurrentMousePosition真的是用于监控ScrollViewer的鼠标位置。如果是这样,为了清楚起见,最好将其命名为ScrollViewerMousePosition