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;            
            }
    }
    获取到滚动条对象后,然后为其绑定事件,最终问题得解
    可能还有其它更好的办法,希望大家不吝分享,谢谢
  • 相关阅读:
    ASP.NET缓存页面
    SQL2005没有服务端开启程序
    Cookie创建以及清除Cookie数组
    http 错误编号大全(转)
    .net 控件库名称
    window.location.hash属性介绍
    CSS半透明滤镜在FIREFOX和IE下面的能够通用的写法
    兼容性问题
    Js获取窗体大小
    springcloud 微服务分布式 flowable 工作流 前后分离vue.js 集成代码生成器 shiro权限
  • 原文地址:https://www.cnblogs.com/Memory/p/1773095.html
Copyright © 2011-2022 走看看