我想将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;
}
答案 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
}
您可能也可以使用混合交互功能,但我无法弄清楚如何将坐标传递给绑定命令。