首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏菩提树下的杨过

    VisualTreeHelper

    从上图可以看到,一个普通的Button控件,在可视化(对象)树里表现为:ButtomChrome,ContentPresenter,TextBlock的组合 另外Silverlight中提供了一个VisualTreeHelper         } private void btnClick_Click(object sender, RoutedEventArgs e)         { int _childCount = VisualTreeHelper.GetChildrenCount [{1}]的内容为:{2}",i,btn.Name,btn.Content));                             }             StackPanel sp = VisualTreeHelper.GetParent IEnumerable<T> FindChildren<T>(DependencyObject parent) where T : class         {             var count = VisualTreeHelper.GetChildrenCount 0)             { for (var i = 0; i < count; i++)                 {                     var child = VisualTreeHelper.GetChild

    1K70发布于 2018-01-23
  • 来自专栏技术之路

    WPF 得到子指定元素方法和得到指定子元素集合方法MvvM得到焦点

    if (parent == null) return null; T foundChild = null; int childrenCount = VisualTreeHelper.GetChildrenCount parent); for (int i = 0; i < childrenCount; i++) { var child = VisualTreeHelper.GetChild = null) { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) { DependencyObject child = VisualTreeHelper.GetChild(depObj,

    1.4K50发布于 2018-01-31
  • 来自专栏walterlv - 吕毅的博客

    实现一个 WPF 版本的 ConnectedAnimation

    (this) == null) { return; } var sourceBounds = VisualTreeHelper.GetContentBounds (_source); if (sourceBounds.IsEmpty) { sourceBounds = VisualTreeHelper.GetDescendantBounds (_destination); if (destinationBounds.IsEmpty) { destinationBounds = VisualTreeHelper.GetDescendantBounds { return; } var sourceBounds = VisualTreeHelper.GetContentBounds (source, 0); var animatingDestination = (UIElement) VisualTreeHelper.GetChild(destination, 0);

    83400发布于 2018-09-18
  • 来自专栏码客

    WPF桌面端开发2-ItemsControl和ListBox获取点击行的索引

    (dep is ListBoxItem)) { dep = VisualTreeHelper.GetParent(dep); if (parent == null) return null; T foundChild = null; int childrenCount = VisualTreeHelper.GetChildrenCount parent); for (int i = 0; i < childrenCount; i++) { var child = VisualTreeHelper.GetChild parent); for (int i = 0; i < childrenCount; i++) { var child = VisualTreeHelper.GetChild <T>(DependencyObject i_dp) where T : DependencyObject { DependencyObject dobj = VisualTreeHelper.GetParent

    3.5K30发布于 2020-05-09
  • 来自专栏菩提树下的杨过

    silverlight:ListBox中如何取得DateTemplate/ItemsPanelTemplate中的命名控件?

    T>(DependencyObject obj,string childName) where T : DependencyObject         { for (int i = 0; i < VisualTreeHelper.GetChildrenCount (obj); i++)             {                 DependencyObject child = VisualTreeHelper.GetChild(obj, i);             } return null;         }     } public class TestData{public string d{set;get;}} } 这里我们借助VisualTreeHelper

    1.2K50发布于 2018-01-23
  • 来自专栏林德熙的博客

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

    builder.AppendLine($"{name}({element.GetType().FullName})\r\n"); for (var i = 0; i < VisualTreeHelper.GetChildrenCount element); i++) { using var t = builder.Indent(); var child = VisualTreeHelper.GetChild

    26310编辑于 2023-11-28
  • 来自专栏dino.c的专栏

    [WPF自定义控件库]好用的VisualTreeExtensions

    DependencyObject> GetVisualSiblingsAndSelf(this DependencyObject element) { } } VisualTreeExtensions封装了VisualTreeHelper 所谓的最好,是因为WPF、Silverlight、UWP控件的生命周期有一些出入,我一时记不太清楚了,总之根据经验运行这个函数的时候可能Visual Tree还没有构建好,VisualTreeHelper 参考 VisualTreeHelper Class (System.Windows.Media) _ Microsoft Docs FrameworkElement.GetTemplateChild(String

    1.5K30发布于 2019-07-12
  • 来自专栏dino.c的专栏

    [UWP]附加属性2:实现一个Canvas

    通过 VisualTreeHelper.GetParent找到它的父元素,调用父元素的InvalidateArrange再次触发ArrangeOverride函数。 譬如在上面的代码中,假设VisualTreeHelper.GetParent是一个很耗时的操作(只是假设),我会把parent放到缓存里面,而这个缓存还是用附加属性实现的。 return; var parent = GetCanvasParent(obj); if (parent == null) { parent = VisualTreeHelper.GetParent = null) parent.InvalidateArrange(); } 注意: 实际上VisualTreeHelper.GetParent函数并没有十分耗时,所以这里是没必要这样写的 (double)args.NewValue; if (oldValue == newValue) return; var parent = VisualTreeHelper.GetParent

    70240发布于 2019-01-18
  • 来自专栏Niuery的技术日记

    WPF --- 触摸屏下的两个问题

    element) { if (element == null) return null; ScrollViewer retour = null; for (int i = 0; i < VisualTreeHelper.GetChildrenCount (element) && retour == null; i++) { if (VisualTreeHelper.GetChild(element, i) is ScrollViewer ) { retour = (ScrollViewer)(VisualTreeHelper.GetChild(element, i)); } else { retour = GetScrollViewer(VisualTreeHelper.GetChild(element, i) as UIElement

    83010编辑于 2024-03-13
  • 来自专栏web全栈之路

    #region 判断datagrid是否点击的数据行

                        return true;                 }                 target = System.Windows.Media.VisualTreeHelper.GetParent

    68620编辑于 2022-09-29
  • 来自专栏林德熙的博客

    WPF 修复 ContextMenu 在开启 PerMonitorV2 后所用 DPI 错误

    // // 寻找创建时的屏幕时,会寻找 PlacementTarget 和 VisualTreeHelper.GetContainingVisual2D(VisualTreeHelper.GetParent

    66330编辑于 2023-04-07
  • 来自专栏hbbliyong

    WPF备忘录(3)如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter

    static T GetVisualChild<T>(Visual parent) where T : Visual { T child = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount (parent); for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild

    7.5K70发布于 2018-03-05
  • 来自专栏python3

    telerik upload 在silv

    GetCustomTagControl(DependencyObject control, string name)         {             for (int i = 0; i < VisualTreeHelper.GetChildrenCount (control); i++)             {                 DependencyObject child = VisualTreeHelper.GetChild(control

    57710发布于 2020-01-14
  • 来自专栏Windows Community

    Windows Community Toolkit 3.0 - Gaze Interaction

    ActivatedInForeground: case CoreWindowActivationMode::ActivatedNotForeground: auto elements = VisualTreeHelper invokable->IsInvokable) { element = dynamic_cast<UIElement^>(VisualTreeHelper safe_cast<PivotHeaderItem^>(TargetElement); auto headerPanel = safe_cast<PivotHeaderPanel^>(VisualTreeHelper DependencyObject^ walker = headerPanel; Pivot^ pivot; do { walker = VisualTreeHelper

    63030发布于 2018-08-10
  • 来自专栏林德熙的博客

    WPF 已知问题 开启 IsManipulationEnabled 之后触摸长按 RepeatButton 不会触发连续的 Click 事件

    GetChild(DependencyObject root, Func<object, bool> predicate) { var childrenCount = VisualTreeHelper.GetChildrenCount root); for (var i = 0; i < childrenCount; i++) { var child = VisualTreeHelper.GetChild

    91510编辑于 2024-02-07
  • 来自专栏林德熙的博客

    WPF 通过 EXIF 设置和读取图片的旋转信息

    需要在实际用到绘制的时候,才会调用 DirectX 进行绘制,例如调用 RenderTargetBitmap 的 Render 方法,将绘制的指令转换为绘制为内存的图片 var dpiScale = VisualTreeHelper.GetDpi drawingContext.DrawLine(new Pen(Brushes.Black, 2), new Point(2, 5), new Point(90, 5)); } var dpiScale = VisualTreeHelper.GetDpi

    1.4K10编辑于 2023-04-07
  • 来自专栏哲学驱动设计

    技术总结:自动扩张WPF树型表格列宽

    至此,第三个问题解决了: var firstColumn = VisualTreeHelper.GetChild(rowPresenter, 0) as UIElement;     最后一个问题,是过程中最麻烦的一个问题 就知道如何计算出第一列的最终宽度了: private double GetFirstColumnDesiredWidth() { var rowPresenter = this.FindGridRow(); if (VisualTreeHelper.GetChildrenCount var firstColumn = VisualTreeHelper.GetChild(rowPresenter, 0) as UIElement; var desiredWidth = firstColumn.DesiredSize.Width

    2K50发布于 2018-01-26
  • 来自专栏菩提树下的杨过

    Silverlight:用Enter键替换Tab键切换焦点

    IEnumerable<T> FindChildren<T>(DependencyObject parent) where T : class { int count = VisualTreeHelper.GetChildrenCount for (int i = 0; i < count; i++) { DependencyObject child = VisualTreeHelper.GetChild

    2.8K100发布于 2018-01-24
  • 来自专栏dotNET编程大全

    C# WPF DataGrid获取单元格并改变背景色

    parent) where T : Visual { T childContent = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount ; for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild

    3.6K20编辑于 2022-01-13
  • 来自专栏小黎子数据分析

    WPF自学入门(一)WPF-XAML基本知识

    遍历可视化树可以简单的使用VisualTreeHelper和简单的递归方法。WPF提供了两个辅助类(LogicalTreeHelper and VisualTreeHelper)来操作这两棵树。

    3.7K10发布于 2019-09-11
领券