[英]WPF MouseMove on Grid, update Position on Object Instance
我想将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;
}
由于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
}
您可能还可以使用混合交互功能,但是我不知道如何将坐标传递给绑定命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.