网格上的WPF MouseMove,更新对象实例的位置

时间:2015-12-22 02:23:05

标签: c# wpf

我想将mousemove事件绑定到一个对象的实例,然后更新此对象中的一些属性,我该怎么做呢?以下是我的XAML:

<Window.Resources>
        <h:AdaptiveObject x:Key="adaptiveObject" />
    </Window.Resources>
   <Grid Name="Container"
            MouseMove="{Binding Source={StaticResource adaptiveObject}, Path=UpdateMouse}"

这是我现在拥有的C#,这只是概念而且不起作用,只是想告诉你我在尝试什么:

namespace AdaptiveViewport
{
    public class AdaptiveObject : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
        }
        public int MouseX { get; set; }
        public int MouseY { get; set; }

        public UpdateMouse(object sender, MouseEventArgs e)
        {
            MouseX = e.X;
            MouseY = e.Y;
        }

1 个答案:

答案 0 :(得分:1)

由于MouseMove是一个事件,你不能简单地将它绑定到一个命令。实现目标的一种方法是在代码隐藏中使用方法:

    <Grid MouseMove="OnMouseMove" Name="Container">...</Grid>

背后的代码:

private void OnMouseMove(object sender, MouseEventArgs e)
{
  var p = Mouse.GetPosition(Container);
  // p.X and p.Y are your coordinates here 
}

您可能也可以使用混合交互功能,但我无法弄清楚如何将坐标传递给绑定命令。