问题标签 [visualtreehelper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - 在 MainWindow 的构造函数期间 ItemsControl 没有子级
根据对 SO 问题“ WPF:在网格中排列集合项目”的回答,我有以下内容:
现在,我想在后面的代码中设置 theGrid 的行数和列数:
为此,当然,我需要找到网格。我在 SO question WPF 方法中使用 CrimsonX 的 FindChild 查找控件以首先定位 itemsControl1,然后将其用作父项,定位 theGrid。
这在从按钮的单击事件处理程序调用时有效。但是,当从 MainWindow 的构造函数调用时它会失败,因为 ic 的 childrenCount 为 0。
那么,如何在窗口显示给用户之前设置 theGrid 的行和列集合?
silverlight - 如果 DataTemplate 嵌套在另一个 Datatemplate 中,则很难与 parent-template 属性绑定
你知道吗?这个问题在网上已经讨论过很多次了。但我的是一个特例,我仍然没有找到正确的解决方案。
场景:Silverlight 4 - 一个 TreeView,其数据由两个 HierarchicalDataTemplate 显示,一个显示第一级数据(即 TreeView 的父项的数据),一个显示第二级数据(用于子项的数据)项目)。在子项模板中,我必须将控件的可见性绑定到父模板的数据源类的属性。
这是 XAML 代码:
如果是 WPF,我可以写:
可见性 =“{Binding DataContext.Ori, Converter={StaticResource rVisibilityConverter}, RelativeSource={RelativeSource AncestorLevel=2, AncestorType={x:Type TreeViewItem}, Mode=FindAncestor}}”
......它肯定会奏效。但我知道在 Silverlight FindAncestor as binding-mode with RealitiveSource is not supported中。网络中的解决方案都围绕在可视化树的代码隐藏中向下滚动。它是通过 Behavior 还是通过 Attached-Propery 实现的并不重要。解决方案是这样的:
我多次使用这样的解决方案,它们总是有效的。但是在这种情况下,我的 DataTemplate嵌套到另一个 DataTemplate 中,然后,当我在“OnAttached”方法中时,“AssociatedObject”的属性“Parent”什么都没有,然后我没有 Visual-Tree to scroll。
你有什么建议吗?先感谢您!皮莱吉
.net - “VisualTreeHelper.GetDescendantBounds()”返回无穷大
为什么VisualTreeHelper.GetDescendantBounds(SomeVisualItem)
方法返回(-Infinity,-Infinity,Infinity,Infinity)
?
SomeVisualItem 的Canvas.Left
, Canvas.Top
, Width
, ... 是显式分配的。
wpf - 如何在 WPF 中对一个特定的 3d 对象执行命中测试?
我的 WPF 3D 场景中有一个 SphereMesh(从 MeshGeneratorBase 继承,作为 Petzold.Media3D.dll 的一部分)。我在那个球体上也有数千个 ScreenSpaceLines3D 对象。我想忽略场景中除 SphereMesh 之外的所有内容,并仅找出鼠标光线与球体相交的 XYZ 坐标。即使球体和鼠标之间还有另一个物体 X,我仍然想知道鼠标会在哪里撞击球体,就好像物体 X 不存在一样。
我已经使用 HitTest 尝试了下面的代码,但是当我在我的场景/世界中添加数千/数百万个其他对象时,它变得非常慢。对象阻塞问题是我无法解决的另一个问题。
你有什么建议吗?
当前代码:
有什么帮助吗?
谢谢。
visualtreehelper - 使用 VisualTreeHelper 在 WPF 中获取子属性不返回值
一旦我使用 visualTreeHelper.getchild 查找子对象,我将如何获取该对象的名称,甚至对象的其他属性(如宽度或高度)?
IE
这不起作用:
它说“名称”类型的值不能转换为 system.windows.dependencyProperty
这也不起作用(但至少它可以编译):
如果我将鼠标悬停在 childvisual 上,我可以查看它的属性并看到该名称已设置为我在画布 (Can1) 上拥有的图像的名称。但是,X 和 Y 始终为 0。
c# - VisualCollection 到 Visual HitTest 不可见?
我正在使用 WPF 中的 VisualCollection、Visual 和 HitTest 并遇到问题。
我尝试制作自定义视觉绘图,如下所示:
然后我发现结果是矩形而不是md1。
我怎样才能使 MyDrawing 成为基本的 Visual 元素,以便 VisualTreeHelper 不会进一步在里面做 HitTest?
非常感谢。
c# - 使用谓词条件搜索元素
如何通过谓词在 VisualTree 中找到框架元素?类似的东西:
我将使用它:
提前感谢您的帮助!
wpf - 从控件中获取 ContentPresenter/ItemsPresenter
如果确实存在,我需要一种从控件访问 ContentPresenter/ItemsPresenter 的方法。
我不知道如何使用 VisualTreeHelper 轻松做到这一点。
我需要递归搜索所有孩子吗?
c# - 使用 Prism 强制创建视觉树
我有一个TabControl
包含棱镜区域。我想为某些事件触发某种通知(例如闪烁选项卡标题),并且我想从 Prism 区域中的组件触发此通知。
一旦包含此类组件的选项卡打开一次,它就可以很好地使用VisualTreeUtil.GetParent()
并向上运行,直到我找到我的TabControl
并可以对其进行修改以指示通知。
但问题是这在用户打开选项卡之前不起作用,因为VisualTreeUtil.GetParent()
返回 null;显然是因为 Prism 直到那时才连接视觉树。
调用包含UpdateLayout()
该TabItem
区域并没有帮助。我不想以编程方式打开 TabItems,因为这会使用户感到困惑。
除了实施一种区域注册表(这会相当丑陋且难以维护)之外,我还能做些什么吗?
如果您想查看代码,我编写了一个最小的解决方案来演示该问题。Print Structure按钮尝试从第二个选项卡上的(最初未渲染的不可见的)hello TextBlock 向上移动可视化树。在您切换到选项卡之前,它只打印 TextBlock,然后您会到达可视树的根目录。这就是我想要在不切换到选项卡的情况下完成的任务。
wpf - VisualTreeHelper.GetChildren 未找到 TabItem 的子项
我有以下 C# 代码来查找 DependendencyObject 的子项:
当我遍历底部发布的 XAML 中的 TabItems 时,将每个 TabItem 传递给上述方法,要求它查找所有扩展程序,它什么也不返回。此外,我在附加到每个选项卡项的 Loaded 事件的事件处理程序中发出此请求。
有人猜我的方法有什么问题吗?我没有在这个特定的自定义控件中尝试过,但是这个方法已被用于在另一个自定义控件中查找给定类型的子项。主要区别在于我要查找的项目是 TabItems 的子项。