簡體   English   中英

WPF在網格上移動鼠標,更新對象實例上的位置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM