zoukankan      html  css  js  c++  java
  • 滑动时不触发ListBoxItem

      在做一个滑动的东西,里面有一些ListBoxItem,每个Item会触发一些事件。每次我滑动的时候如果从没有Item的地方滑到有Item的地方,或者从Item里面往外滑动时,都会触发到Item里面的事件。本来Item是用SelectionChanged的这个事件的。但对于我这种菜鸟来说表示消化不了。所以我把这些事件放到了PreviewMouseUp中,然后先在PreviewMouseDown中抓住鼠标的坐标,然后再在Up中计算出其中的坐标的差,然后在一定的范围内就代表这这个东西没有滑动而是正常的点击,而如果移动了一定的距离则表明我是在滑动,然后就可以不触发其中的事件。

      下面我做了一个小的DEMO,当我鼠标移动的时候右边的TextBox是不会显示出Item中的项的,然后只有当我点击的时候才会触发此项,然后把Item中的String放入TextBox中。

    主要代码如下:

    View Code
        public partial class MainWindow : Window {
            public MainWindow() {
                InitializeComponent();
            }
    
            private void listBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
                Point p = e.GetPosition(listBox);
                x = p.X;
                y = p.Y;
            }
    
            private void listBox_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) {
                Point p = e.GetPosition(listBox);
                var offsetX = Math.Abs(p.X - x);
                var offsetY = Math.Abs(p.Y - y);
                if (offsetX <= 10 && offsetY <= 10 && listBox.SelectedItem != null) {
                    dosomething();
                }
            }
    
            void dosomething() {
                if (listBox.SelectedItem != null) {
                    foreach (ListBoxItem list in listBox.SelectedItems) {
                        if (list != null) {
                            string str = list.Content.ToString();
                            tb.Text = str;
                        }
                    }
                }
            }
    
            private double x;
            private double y;
        }

  • 相关阅读:
    利用google kaptcha完成登陆动态验证码
    Linux和Windows环境下安装Nginx
    将图片设定为固定大小
    将xls格式的Excel转换成图片
    将pdf格式的文件转换成图片
    SSH连接工具类
    java判断ip内外网
    jenkins安装与使用
    Eclipse快捷键大全
    serialVersionUID的作用
  • 原文地址:https://www.cnblogs.com/socialdk/p/2689749.html
Copyright © 2011-2022 走看看