• 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;            
            }
    }
    获取到滚动条对象后,然后为其绑定事件,最终问题得解
    可能还有其它更好的办法,希望大家不吝分享,谢谢
  • 相关阅读:
    一周总结
    各个方法的不同和优缺点
    随机抽签程序报告
    一周总结
    一周总结
    一周总结
    数据库基本知识
    线程相关概念
    进程相关概念
    模拟ssh实现远程执行命令(socket)
  • 原文地址:https://www.cnblogs.com/Memory/p/1773095.html
Copyright © 2020-2023  润新知