zoukankan      html  css  js  c++  java
  • silverlight中DataGrid的滚动条绑定事件问题

    今天遇到一个问题:

    需要在点击红色框中的滚动条时,将窗体在最上层显示,点击datagrid的其它地方都能让窗口最上层显示,唯独滚动条不可以。

    但是在silverlight不能获取到DataGrid的滚动条对象,这点很郁闷。按理说它是DataGrid的一部分,在DataGrid的控件范围内点击都能触发DataGrid的

    鼠标点击事件,事实却让我很失望。

    最后找到以下解决方法:

    1.在DataGrid中查找滚动条,然后为它绑定事件

    代码
    private void FindScrollBar(DependencyObject obj, ref List<ScrollBar> scrollBars)
    {
          
    for (int i = VisualTreeHelper.GetChildrenCount(obj) - 1; i >= 0; i--)
          {                
               DependencyObject child 
    = VisualTreeHelper.GetChild(obj, i);
               
    if (child != null && child is ScrollBar)
               {
                     scrollBars.Add(child 
    as ScrollBar);
               }
               
    else
               {
                     FindScrollBar(child, 
    ref scrollBars);                    
               }
           }
    }
     
    2.自定义一个类,并继承DataGrid
    代码
    public class MyDataGrid:DataGrid
    {
            
    public MyDataGrid()
            {            
            }

            
    public ScrollBar VerticalScrollbar()
            {              
                
    return base.GetTemplateChild("VerticalScrollbar"as ScrollBar;            
            }

            
    public ScrollBar HorizontalScrollbar()
            {
                
    return base.GetTemplateChild("HorizontalScrollbar"as ScrollBar;            
            }
    }
    获取到滚动条对象后,然后为其绑定事件,最终问题得解
    可能还有其它更好的办法,希望大家不吝分享,谢谢
  • 相关阅读:
    微信小程序中,block的作用
    关于小程序 页面中的生命周期函数
    MySQL -- 修改root密码
    Python3 -- time 获取任意前N天的日期
    linux -- 解决配置vim中文乱码的问题
    Linux -- iTem2 长时间保持会话(不断开)
    数据结构与算法 -- Python实现【归并排序算法】
    Git -- 目录
    Linux -- screen 命令
    python3 -- Linux 离线安装pip3方法
  • 原文地址:https://www.cnblogs.com/Memory/p/1773095.html
Copyright © 2011-2022 走看看