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;            
            }
    }
    获取到滚动条对象后,然后为其绑定事件,最终问题得解
    可能还有其它更好的办法,希望大家不吝分享,谢谢
  • 相关阅读:
    html5--html实现乘法口诀表
    html5--switch选择结构的优化
    CSS盒子模型
    html5--项目实战-仿天猫(移动端页面)
    关于运动
    自然拼读法长元音
    揭开自然拼读法(Phonics)的神秘面纱
    ExtJs自学教程(1):一切从API開始
    四个好看的CSS样式表格
    【Linux】linux经常使用基本命令
  • 原文地址:https://www.cnblogs.com/Memory/p/1773095.html
Copyright © 2011-2022 走看看