bet*_*ris 6 c# wpf command mvvm
我想要做的是一个UserControl包含一个带网格的部分,点击网格时会发生一些事情.我需要点击发生的像素的位置,我正在做所有这些MVVM风格.我知道如何在ViewModel上提示操作:
<Grid>
<Grid.InputBindings>
<MouseBinding Gesture="LeftClick" Command="{Binding MinimapClick}"/>
</Grid.InputBindings>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我现在的问题是我不知道如何检索坐标...任何想法?我感谢您的帮助!
bet*_*ris 12
KDiTraglia对我有正确的指针......无论如何,我在定义动作和绑定到我的ViewModel时遇到了一些问题.如果其他人有问题,我会发布我的解决方案.这是我在xaml中所做的:
<Grid Width="100" Height="100" Grid.Column="2" Grid.Row="2" x:Name="TargetGrid">
<Grid>
<Grid.InputBindings>
<MouseBinding Gesture="LeftClick" Command="{Binding Path=TargetClick}" CommandParameter="{Binding ElementName=TargetGrid}" />
</Grid.InputBindings>
</Grid>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我创建UserControl并将其绑定到ViewModel.在ViewModel中,我实现并创建以下命令:
public class PositioningCommand : ICommand
{
public PositioningCommand()
{
}
public void Execute(object parameter)
{
Point mousePos = Mouse.GetPosition((IInputElement)parameter);
Console.WriteLine("Position: " + mousePos.ToString());
}
public bool CanExecute(object parameter) { return true; }
public event EventHandler CanExecuteChanged;
}
public PositioningCommand TargetClick
{
get;
internal set;
}
Run Code Online (Sandbox Code Playgroud)
这个怎么样?
private void MinimapClick(object parameter)
{
Point mousePos = Mouse.GetPosition(myWindow);
}
Run Code Online (Sandbox Code Playgroud)
如果您没有对窗口的引用,则可以将其作为参数发送(或使用您想要的任何参考点).
| 归档时间: |
|
| 查看次数: |
4902 次 |
| 最近记录: |