问题标签 [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.
c# - 如何从同一个 ListBoxItem 的 DataTemplate 创建的按钮访问 ListBoxItem
问题
鉴于这段代码,我想在按下它时访问ListBoxItem
包含 a的属性(更具体地说,它的索引)。Button
我认为我需要获取Button
' 的父级(它是一个StackPanel
),然后是它的父级TemplatedParent
,然后沿着 Visual Tree 向上走,但我不知道两件非常重要的事情:如何有效地解决我的问题,这是否真的解决了我的问题。
XAML
C夏普
我的一段代码可以正常工作
我认为可能是答案(不工作)
c# - 重置用户控件 WPF 的视觉偏移
有一个树视图,其节点绑定到用户控件,这些用户控件是在选择时使用视图注入加载的。此时控件的视觉偏移设置为 (0,0)。有没有办法我以后可以改变这个视觉偏移。O 取消选择此控件时,如何从视觉树中卸载此控件,以便将此视觉偏移设置为默认值。
c# - 捕获对父视觉树的更改
从 WPFFrameworkElement
中,如何捕获从根到可视化树路径的任何更改FrameworkElement
?即,何时将FrameworkElement
或其任何父级添加到视觉树的另一个分支,从中删除或移动到另一个分支?
- 我一直在寻找合适的事件,但是虽然
FrameworkElement
有一个OnVisualParentChanged
方法,但它没有提供一个相应的事件,可以在不继承框架元素的情况下注册处理程序。因此,这不能应用于任意的、已经实例化FrameworkElement
的 s。 - 理论上,A
RelativeSource
绑定在这里应该对我有帮助,但要让它工作,我已经需要知道我在寻找哪个父节点(什么类型,什么级别),但事实并非如此(见下文)。
用例:对于另一个问题,一个有希望的可能解决方案是使用当前NameScope
相关的 a FrameworkElement
。NameScope
可以从NameScope
附加属性中检索适当的实例,但它不是为树中的每个节点设置的,仅用于从控件模板和窗口构造的可视树的根。
因此,要找到适合NameScope
我的FrameworkElement
,我需要沿着可视化树向上走,直到找到一个null
为附加属性设置了非值的节点NameScope
,并且我必须重做此操作以可能NameScope
每次更新我上面的视觉树FrameworkElement
已经改变。
这个讨论涉及到这个话题,但它已经 6 岁了,没有解决方案。
c# - 如何在 TabItem 加载时初始化 TabItem 内容?
有没有办法在标签加载时初始化标签内容?我遇到了一个问题,当创建 Tab 时,它不会立即初始化它的组件。只有当我单击 Tab 时,才会显示内容。
按钮点击事件
wpf - 将视图模型弹出到单独的窗口(如 Chrome 选项卡)
我的应用程序由一个带有各种视图模型的窗口组成,这些视图模型显示图形/图表/表格等。我的用户已经决定他们希望能够弹出一个图表并将其显示在自己的窗口中,类似于你可以如何拖动一个选项卡Chrome 或 Visual Studio 外的停靠视图,以在其自己的窗口中查看它。
我想避免生成视图模型的新实例以在新窗口中使用。
有没有办法在将视图模型从一个窗口移动到另一个窗口时保留它?有没有一种方法可以轻松地从一个可视化树中删除相应的视图并将其添加到另一个?
更新:
我查看了 AvalonDock,但它并不是我想要的。我只想将现有的视图模型从 UI 的一部分移动到窗口。有任何想法吗?
c# - 递归查找视觉孩子不是在WPF中添加根对象吗?
我有以下实现来获取类型 T 的 VisualTree 中的所有子项:
我使用以下方法调用此方法:
但是,当根依赖对象的类型为 T 时,此实现无法正常工作。假设我们想要在 VisualTree 中查找所有 TextBlock
在这种情况下,实现成功地找到了 TextBlock。但是,如果我有这个其他布局:
该实现不包括根对象,因此它找不到 TextBlock。如何重新编写方法并包含根对象?
c# - 如何在WPF中设置当前窗口的所有可见和可聚焦控件的TabIndex
单击按钮后,我试图遍历可视树并列出当前窗口的所有可见和可聚焦组件控件(例如按钮、图像、文本框等),并将它们的 TabIndex 设置为某个值。然而,一些控件没有被列出或者 tabIndexes 没有被设置!
这是我从这里采用的课程
这就是它的名称
wpf - 在 Visual Studio 2015 中为“Live Visual Tree”选择窗口
我有一个包含 2 个 WPF 应用程序的 Visual Studio 2015 解决方案。当我在调试模式下运行解决方案时(按 F5),这两个应用程序都会启动。我正在使用 Visual Studio 2015 附带的新 Live Visual Tree 窗口,但它只显示其中一个应用程序的可视化树。
有没有办法选择另一个视觉树,甚至同时查看它们?