`

FindName和VisualTreeHelper

 
阅读更多
int iCount = this.dataGridCancelOrderList.Items.Count;
                for (int i = 0; i < iCount; i++)
                {
                    var cntr = this.dataGridCancelOrderList.ItemContainerGenerator.ContainerFromIndex(i);
                    DataGridRow ObjROw = (DataGridRow)cntr;
                    if (ObjROw != null)
                    {
                        DataGridTemplateColumn templeColumn = dataGridCancelOrderList.Columns[0] as DataGridTemplateColumn;//0列为checkBox
                        if (templeColumn != null)
                        {
                            FrameworkElement objElement = templeColumn.GetCellContent(ObjROw);

                            if (null != objElement)
                            {
                                System.Windows.Controls.CheckBox checkBox = templeColumn.CellTemplate.FindName("checkBox", objElement) as System.Windows.Controls.CheckBox;
                                checkBox.IsChecked = IsSelectAll;
                            }
                        }
                    }
                }


public static DataGridRow GetDoubleClickRow(DataGrid dataGrid)
        {
            try
            {
                if (dataGrid == null) return null;
                Point point = Mouse.GetPosition(dataGrid);
                IInputElement inputElement = dataGrid.InputHitTest(point);
                DependencyObject target = inputElement as DependencyObject;
                if (target is TextBlock)
                {
                    while (target != null)
                    {
                        if (target is DataGridRow)
                        {
                            DataGridRow dr = target as DataGridRow;
                            return dr;
                        }
                        target = VisualTreeHelper.GetParent(target);
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("获取双击行出错:"+ex.Message);
            }

            return null;
        }
分享到:
评论

相关推荐

    WPF 什么时候 VisualTreeHelper.GetDescendantBounds 将返回无穷大.rar

    在Windows Presentation Foundation (WPF) 中,`VisualTreeHelper.GetDescendantBounds` 是一个非常重要的方法,用于...通过深入理解WPF布局系统和`VisualTreeHelper`的工作方式,开发者可以有效地诊断和修复这类问题。

    WPF查找一个控件下的子控件

    除了VisualTreeHelper,还可以利用DependencyObject类的FindName()方法,如果你知道子控件的名称,可以快速找到它: ```csharp FrameworkElement child = parentControl.FindName("childName") as FrameworkElement...

    wpf 测试游戏(新手)

    同时,WPF提供了五种布局系统:StackPanel、Grid、Canvas、DockPanel和WrapPanel,用于控制元素在屏幕上的位置和大小。 3. **数据绑定** 数据绑定是WPF的核心特性之一,允许UI与业务逻辑或数据源动态关联。通过...

    WPF中ItemsControl应用虚拟化时找到子元素的方法

    可以利用`VisualTreeHelper`类的方法,如`GetChildrenCount(DependencyObject parent)`和`GetChild(DependencyObject parent, int index)`,递归遍历视觉树来找到特定元素。但这种方法效率较低,因为需要在运行时...

    WPF获取DataTemplate里的控件

    在创建复杂用户界面时,我们经常需要动态地访问和操作`DataTemplate`内的控件。本篇文章将深入探讨如何在WPF中获取`DataTemplate`中的控件,并提供源代码示例。 ### 一、DataTemplate概述 `DataTemplate` 是一个...

    WPF入门-07模板控件(附c#代码)

    WPF公开了两个提供树形视图帮助器类:LogicalTreeHelper 和 VisualTreeHelper。逻辑树指的是UI界面的组成元素的结构。可视化树是逻辑树的扩展版本,它将元素分成更小的部分 2,控件模板(Control.xaml) 首先在资源...

    silverlight自动生成控件

    模型(Model)负责数据处理,视图(View)是用户看到和交互的部分,而视图模型(ViewModel)作为两者之间的桥梁,提供数据绑定和命令实现。 **自动生成控件** 在Silverlight中,我们可以利用代码-behind或者数据绑定来...

    dotnet UNO 如何在调试下输出界面层级结构.rar

    这可能涉及到`VisualTreeHelper`类和递归函数的使用。 3. 使用Uno Platform提供的API:Uno平台可能提供了特定的方法或扩展,以适应跨平台的环境,用于输出界面层级结构。 4. 自定义日志记录:创建自定义的日志记录...

    Canvas上批量创建可视对象(DrawingVisual)管理,获取鼠标悬浮图形状态,并控制鼠标右键快捷菜单等...

    在本文中,我们将深入探讨如何在WPF应用中利用Canvas和DrawingVisual批量创建可视对象,以及如何实现鼠标悬浮时获取图形状态和控制鼠标右键快捷菜单。这些技术对于开发高效且用户友好的图形界面至关重要。 首先,让...

    中文版WPF Summary.pdf

    为了方便对逻辑树和视觉树进行操作,WPF 提供了 `System.Windows.LogicalTreeHelper` 和 `System.Windows.VisualTreeHelper` 类来帮助遍历这两个树结构。下面是一个简单的示例,演示如何遍历逻辑树: ```csharp ...

    在DataGrid中进行复选框的操作(全选和取消)

    在.NET框架中,`DataGrid`控件是一个用于展示数据表格的强大工具,它允许用户以交互方式查看和编辑数据。在某些应用场景下,我们可能需要在`DataGrid`的每一行添加复选框,以便用户可以多选操作,如全选和取消全选...

    WPF 基础视频教程(共50集)-36.命中测试

    这个框架提供了丰富的用户界面(UI)功能,包括2D和3D图形、媒体集成、数据绑定、动画以及丰富的文档支持。在本教程中,我们将深入学习“36.命中测试”这一主题,它对于理解和调试WPF应用中的交互至关重要。 **命中...

    wpf下Popue控件例子,拖动,位置改变等

    可以利用VisualTreeHelper类查找Popup内的元素,然后计算它们相对于屏幕的位置。 在实现这些功能时,我们还需要考虑Popup的打开和关闭逻辑。Popup有一个IsOpen属性,用于控制其可见性。我们可以通过绑定此属性到...

    连连看棋盘.rar

    例如,利用MouseLeftButtonDown事件监听用户的鼠标点击,结合VisualTreeHelper类查找相邻的棋子,判断并执行消除操作。同时,可以利用DependencyProperty实现视图和模型之间的数据绑定,确保界面状态与游戏状态同步...

    WPF多点触控实例源码

    WPF提供了`VisualTreeHelper`类来进行可视化层次结构的遍历,以及`HitTestResult`类来确定触点的位置。 5. **Custom Controls**:自定义控件可能包括额外的逻辑和视觉反馈,以增强触控体验。开发者可能通过继承`...

    WPF项目中使用的屏幕截图、控件截图、打印与导出Excel

    这一步通常需要借助`PresentationSource`和`VisualTreeHelper`类来获取控件的视觉树信息。 3. **打印**: WPF提供了`PrintDocument`和`PrintDialog`类来支持打印功能。`PrintDocument`用于定义要打印的内容,可以...

    调试wpf-wpf可视化树+辅助类

    4. **访问方法**:使用VisualTreeHelper类,可以遍历、查找和操作可视化树中的元素。例如,`VisualTreeHelper.GetChild(parent, index)`可获取父元素的指定子元素。 **二、辅助类** 在WPF调试中,辅助类常常用于...

    使用C# WPF实现图片查看器,支持鼠标拖动和滑轮控制放大缩小

    这可以通过`VisualTreeHelper`类和`PointToScreen`方法实现。 6. **布局管理**:为了保持图片在窗口内的可见性,可能需要使用`Grid`或`Canvas`作为图片的父容器,以便进行适当的布局管理。 7. **注释**:在代码中...

    在WPF TabControl中切换选项卡时,保留视觉树

    这可以通过遍历Visual Tree,使用VisualTreeHelper类来实现。同时,我们也需要确保在选项卡切换过程中,数据绑定仍然有效。 接下来,我们需要在XAML中应用这个附加行为。通过`i:Interaction.Behaviors`标签,我们...

    WPFTreeview

    它允许用户以树状结构浏览和交互数据,是桌面应用程序设计中不可或缺的一部分。本篇文章将深入探讨`WPFTreeView`的使用,尤其是与`Checkbox`结合的综合应用。 ### 1. `TreeView`基本概念 `TreeView`控件用于展示...

Global site tag (gtag.js) - Google Analytics