问题标签 [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 投票
1 回答
482 浏览

c# - 如何在 wp7 的可视化树中查找元素?

我需要在视觉树中找到元素。例如,我有一个网格,当 ExpanderView 展开时,我需要在 tbox:WatermarkTextBox 中设置我自己的文本。xml

C#

0 投票
2 回答
2458 浏览

wpf - 如何强制 DataGrid 为其列重建 VisualTree

我有带有 DataGrid 的 WPF 表单。用户可以通过按钮手动将新列添加到数据网格中。这是添加新列的代码:

问题是,在我将列添加到网格后,它的标题尚未生成,并且它不存在于可视树中。因此,我无法获取新列的标题并将装饰器应用于它。我试图在网格的可视树上递归调用 ApplyTemplate,但没有任何运气。

有没有办法强制网格为代码中的新列生成 DataGridColumnHeader?

先感谢您。

0 投票
2 回答
876 浏览

wpf - 从模板列中的嵌套控件获取 DataGridCell 而无需遍历可视化树

DataGridCell 似乎不在控件的 VisualTree 中。

我有一个 DataGridTemplateColumn,它在网格内的堆栈面板中包含一个矩形和标签。

我希望PreviewMouseLeftButtonDown事件在可视树中向上迭代,直到找到父元素为空DataGridCell之后。Grid

阅读下面的链接,似乎在 DataGrid 的可视化树中 UIControls 被设置为DataGridCell. 那么如何从 Rectangle 中获取 DataGridCell 呢?

http://blogs.msdn.com/b/vinsibal/archive/2008/08/14/wpf-datagrid-dissecting-the-visual-layout.aspx

0 投票
2 回答
274 浏览

c# - 使用 Prism 强制创建视觉树

我有一个TabControl包含棱镜区域。我想为某些事件触发某种通知(例如闪烁选项卡标题),并且我想从 Prism 区域中的组件触发此通知。

一旦包含此类组件的选项卡打开一次,它就可以很好地使用VisualTreeUtil.GetParent()并向上运行,直到我找到我的TabControl并可以对其进行修改以指示通知。

但问题是这在用户打开选项卡之前不起作用,因为VisualTreeUtil.GetParent()返回 null;显然是因为 Prism 直到那时才连接视觉树。

调用包含UpdateLayout()TabItem区域并没有帮助。我不想以编程方式打开 TabItems,因为这会使用户感到困惑。

除了实施一种区域注册表(这会相当丑陋且难以维护)之外,我还能做些什么吗?

如果您想查看代码,我编写了一个最小的解决方案来演示该问题。Print Structure按钮尝试从第二个选项卡上的(最初未渲染的不可见的)hello TextBlock 向上移动可视化。在您切换到选项卡之前,它只打印 TextBlock,然后您会到达可视树的根目录。这就是我想要在不切换到选项卡的情况下完成的任务。

0 投票
3 回答
746 浏览

.net - 走视觉树是不好的做法吗?

最近我看到一些关于走可视化树是不好的做法的评论(例如这里),但我还没有看到或找到为什么这是不好的做法的原因。

在我正在做的一个项目中,有相当多的树木行走,所以我想知道我是否应该费心将所有这些更改为其他东西,或者就让它保持原样。

所以,我想我的主要问题是视觉树行走是否真的是不好的做法,更重要的是,如果是,为什么

另外,在哪里(如果有的话?)可以在视觉树上行走吗?

0 投票
1 回答
791 浏览

wpf - Caliburn.Micro 消息冒泡跳过控件

我有一个分层集合,由于它的大小,我延迟加载最低级别。

我试图激活的操作是在 CollectionHolderManager 上,但似乎冒泡由于某种原因跳过了该可视层。

因此,如果我对 TopLevelCollection 执行操作,则会调用它。

如果我在拥有 CollectionHolderManager 的 ViewModel 上有它,它会被调用,但在 CollectionHodlerManager 本身上时不会。为什么要跳过它?

0 投票
1 回答
1157 浏览

wpf - WPF Printing large custom control

I'm sorry if this is a duplicate, but I couldn't find anything relating to it.

I'm trying to create an XpsDocument from a custom control that I have. The custom control already defines properties for a header and a footer, along with the body.

The idea is to be able to use that same control (or derivatives of it) as an input to some custom DocumentPaginator that will create a printer-ready version of that "report", with the header and the footer put on every page, and the controls, inside the body, showing in full (I don't want to create a bitmap of the whole control, then scale it and cut it where the page ends).

Any ideas on how I can split the contents of a user control into pages? Or suggestions on a different way to achieve the printing of the control onto pages?

Thanks a lot in advance

0 投票
2 回答
2909 浏览

c# - 为什么 VisualTreeHelper.GetChildrenCount() 为 Popup 返回 0?

我将焦点移到 Popup 的开幕式上:

FocusHelper 类代码:

ElementTreeHelper 类部分:

问题是 var count = VisualTreeHelper.GetChildrenCount(parent) == 0 当 parent 是 Popup 时。

更新

答案在这里

0 投票
1 回答
1082 浏览

c# - 当前数据透视页面的视觉元素

我正在为 Windows Phone 7 使用 C#、Silverlight、Visual Studio。

我有兴趣只获取在枢轴期间当前显示在屏幕上的视觉元素。例如,我的枢轴可能有 5 个 PivotItem,但我只想获取每次轻弹后显示的项目。

现在,我可以从可视化树中获取整个枢轴,显然我可以选择一个特定的 PivotItem。但我希望能够只获得屏幕上的当前枢轴。最终目标是获取屏幕上元素的绝对位置,而不考虑当前的 PivotItem。

这可能吗?如果是这样,怎么做?

0 投票
2 回答
2140 浏览

wpf - 为什么在父元素成功的情况下将子元素绑定到另一个元素时绑定失败?

假设我有两个类可以引用第三个 UI 对象(在本例中为按钮)。

此外,父类可以包含子类的元素。

如果它们都绑定到同一个控件,以同样的方式,孩子会失败,但父母会成功。

这是 WPF 中的错误吗?


家长:


然后是孩子:

好的 -

现在说我像这样将它们添加到我的 XAML 中:

当我使用完全相同的表示法时,为什么绑定在父级上有效,但在子级上失败?


这是我的测试代码...

这是测试结果...

父按钮引用是 System.Windows.Controls.Button

子按钮引用为空!