我有一个WPF项目(C#,MVVM Light,Visual Studio 2010)。WPF在viewmodel中获取鼠标坐标
我有一个关于问题分离的问题(MVVM),基本上是这样的:我在视图模型中有一个命令。我有一个我想调用该命令的上下文菜单。到现在为止还挺好。问题是该命令需要协调鼠标被点击。
为了更具体一点,ContextMenu仅在您点击特定Canvas控件时出现,并且它是所需的Canvas控件中的坐标。
这样做的简单方法是在XAML文档后面的代码中进行管理(我已经可以这样做了),但是如果我能做到的话,我宁愿将其放在ViewModel中所以。原因是在这个命令中有对我的数据模型的调用,所以我们最终会遇到分离问题。
我知道PassEventArgsToCommand,我意识到这是一个不好的做法,但是在这种情况下,我不确定我能否看到解决方法。所以,目前我没有尝试,它看起来像这样:
<ContextMenu x:Key="BackgroundMenu">
<MenuItem Header="Add new node here">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cmd:EventToCommand Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}, Path=PlacementTarget.DataContext.AddNewNodeAtLocationCommand}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</MenuItem>
</ContextMenu>
所以,现在我命令,视图模型中,看起来是这样的:
void AddNewNodeAtLocationExecute(RoutedEventArgs e)
{
return;
}
内,我想这个方法得到这些鼠标坐标,但我不知道是否可能。 e.OriginalSource是'MenuItem',这没有多大帮助。
那么我该如何做到这一点?我可以这样做吗?或者我应该只有这一个由代码处理的命令?所述代码将涉及对数据库的调用,这就是为什么我对分离非常特别。
在此先感谢。
是否需要实际的鼠标坐标或Canvas中元素的x和y坐标? – mm8