基于WPF数据绑定的鼠标随动显示光标位置的方法

来源:互联网 发布:html css js手机版 编辑:程序博客网 时间:2024/06/08 01:25

Target: 创建一个Label,可以跟随鼠标移动,并显示光标位置信息。

Way: 在WPF里xaml文件里定义Canvas容器空间,再在Canvas容器里添加Label控件,并进行数据绑定

xaml代码片段:

        <Canvas Name="CanvasImg">            <Label Name="LabelDistance" Background="Wheat" Canvas.Left="{Binding XPosition}" Canvas.Top="{Binding YPosition}"></Label>            <Canvas.Resources>                            </Canvas.Resources>        </Canvas>

代码片段说明:

给Label一个名字,不妨叫LabelDistance,背景色设置为麦色,Label的水平方向绑定XPosition,垂直方向绑定YPosition。

 

然后添加INotifyPropertyChanged接口,设置XPosition,YPosition


    public partial class MainWindow : Window,INotifyPropertyChanged    {        public MainWindow()        {            InitializeComponent();            this.DataContext = this;        }        public double XPosition {            get;            set;        }        public double YPosition {            get;            set;        }


添加代码

        public event PropertyChangedEventHandler PropertyChanged;        [NotifyPropertyChangedInvocator]        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) {            PropertyChangedEventHandler handler = PropertyChanged;            if (handler != null) {                handler(this, new PropertyChangedEventArgs(propertyName));            }        }


鼠标移动响应

        private void IMG1_MouseMove(object sender, MouseEventArgs e) {            var img = sender as ContentControl;            if (img == null) {return;}            if (mouseDown) {                Domousemove(img, e);            }            Point position = e.GetPosition(img);            LabelDistance.Content = position.ToString();            XPosition = position.X;            YPosition = position.Y;            OnPropertyChanged("XPosition");            OnPropertyChanged("YPosition");        }


原创粉丝点击