问题标签 [visual-tree]

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.

0 投票
3 回答
43669 浏览

wpf - WPF 获取鼠标下的元素

WPF 有没有办法在 MouseMove 事件上获取鼠标下的元素数组?

0 投票
2 回答
11870 浏览

wpf - 绑定元素名称。它使用可视树还是逻辑树

有了{Binding ElementName=foo},它会查找视觉树还是逻辑树?

WPF 中的逻辑和可视化树 数据看,数据做

逻辑树何时重要?

在查找名称时,例如在 {Binding ElementName=Foo} 中,搜索会沿着祖先查找名称范围,就像它对可继承属性所做的那样。

通过附加行为在 Silverlight 中绑定 ElementName

为了实现这一点,WPF 提供了 ElementName 和 RelativeSource 绑定,为您提供了一种强大的机制来定位可视树中的其他元素以绑定到

编辑:

它看起来像用于绑定的逻辑树ElementName

论据#1。

根据 MSDN 文章FrameworkElement 类

FrameworkElement 扩展了 UIElement 并添加了以下功能:

  • 对数据绑定和动态资源引用的支持:对数据绑定和资源的属性级支持由 DependencyProperty 类实现并体现在属性系统中,但能够解析存储为表达式的成员值(编程构造作为数据绑定和动态资源的基础)由 FrameworkElement 实现。有关详细信息,请参阅数据绑定概述和资源概述。

论点#2。

ElementName指向x:Name,所以应该如何找到这个名称。有一个NameScope概念。

对于大多数情况,在 FrameworkElement 和 FrameworkContentElement 上公开的 FindName 方法是更适合调用以按名称搜索元素的方法。FrameworkElement 和 FrameworkContentElement 公开的 Name 属性更适合用于将初始名称设置为标记属性。并且在 FrameworkElement 和 FrameworkContentElement 上公开的 RegisterName 方法对于在特定名称范围内建立名称是必要的(没有 NameScope 成员可以直接执行此操作;您必须先设置当前名称范围才能使用 RegisterName)。

另一方面,Visual 类既没有FindName方法,也没有实现INameScope

0 投票
2 回答
1225 浏览

wpf - WPF - 获取可视化树的快速方法

我在网格中动态添加一些控件。我不知道有多少,也不知道确切的层次结构。我想要做的是访问一些具有特定类型的控件(例如按钮)并实例化一些属性。做这个的最好方式是什么?

0 投票
2 回答
2862 浏览

wpf - 有没有办法在可视化树中移动控件?(WPF)

我想将一些控件从视觉树中的一个部分重新定位到另一个部分。

  • 我可以这样做吗?
  • 以及如何做的方向或提示?
0 投票
0 回答
252 浏览

wpf - 遍历 Model3DGroup 树

我有一个复杂的 3D 场景,其中包含我需要在运行时分析的 Model3DGroups。由于Model3D节点既不参与 VisualTree 也不参与 LogicalTree 有没有其他方法可以找到 a 的父级Model3DGroup

0 投票
2 回答
1049 浏览

wpf - 从可视树中删除元素后,如何触发 commandBinding 的 CanExecute ?

我在这里有一个相关的问题,我有一个带有命令绑定的用户控件。用户控件已从可视化树中删除,但 canExecute 仍在触发。我对指挥模型的理解是,它像路由事件一样冒泡和隧道。那么一旦附加了命令绑定的元素不再在可视树中,CanExecute 怎么能触发呢?

0 投票
2 回答
2881 浏览

wpf - WPF:将 ContextMenu 绑定到可视父级

我知道ContextMenus 不是可视化树的一部分,但我一直在尝试将Visibilitya 的属性绑定ContextMenu到其 parent 上的属性UserControl。到目前为止,我已经尝试过祖先绑定并尝试了转换,但目前看来远程可行的唯一方法是使用 aMultiValueConverter和反射在UserControl. 即使那样,我也不确定它会起作用。

我会以错误的方式解决这个问题吗?

0 投票
2 回答
324 浏览

wpf - 在工作线程中遍历 VisualTree 以进行全文搜索

我正在使用 WPF 来显示复杂的数据(想想报告)。我现在需要对其进行全文搜索。我们目前通过遍历可视化树来寻找文本块来做到这一点。看来这需要在UI线程上完成,是吗?这里的问题是,在整个 UI 块期间找到下一个匹配项可能需要相当长的时间。

有没有办法绕过这个问题?我可以尝试使用 UI 自动化,但是一旦找到匹配项,我该如何突出显示它?使用 UI 自动化我没有得到对 UI 元素的实际对象实例的引用,因此我不能在它上面放置一个装饰器。

WPF中的全文搜索通常是如何实现的?XPS 查看器是如何做到的?

0 投票
1 回答
49 浏览

wpf - 如何检查我的控件何时获取或更改可视父级?

我想挂钩我的控件的可视父事件。

0 投票
2 回答
3863 浏览

c# - XAML 中定义的 DataTemplate 具有 null VisualTree

我将 WPF 与 .NET 3.0 一起使用。

我有一个相对简单的 DataTemplate 定义为 GridView 的 CellTemplate。我希望 DataTemplate 的 VisualTree 属性包含一个 FrameworkElementFactory,但是当我尝试从 GridViewColumnHeader.Click 事件访问它时,该属性为空。为什么 VisualTree 为空?我需要访问它。这是 ListView 定义:

这是事件处理程序: