问题标签 [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.

0 投票
1 回答
1940 浏览

wpf - wpf中选定控件的边界矩形

有没有一种简单的方法可以找到覆盖一组控件所需的矩形(区域和位置)?VisualTreeHelper.GetDescandentBounds()工作正常,但没有重载的方法我可以指定它应该考虑查找边界矩形的控件。任何简单的解决方案将不胜感激。

谢谢

0 投票
1 回答
640 浏览

silverlight - 获取 ListBox 项 Silverlight

我尝试使用 VisualTreeHelper 类获取列表框项。当我执行 VisualTreeHelper.GetChildrenCount((DependencyProperty)listBox1) 时,它返回计数为 0。但是列表框中有很多列表框项。如果我做错了,有人可以告诉我吗?

问候, 拉利斯

0 投票
2 回答
1270 浏览

wpf - WPF TabControl SelectedItem 更改时如何访问新的可视化树

考虑一个已经加载并呈现的具有三个选项卡的 TabControl,其中选定的选项卡是索引 1(中间一个):

选项卡 1:有一个文本框

选项卡 2:有两个文本框

选项卡 3:具有三个文本框

如果我使用 VisualTreeHelper 遍历 selectedItem 的可视化树,我将在 TabControl 的子项中获得两个文本框。

I want to iterate again when the tab selection changes and access the new tab's controls. 如果我切换到标签索引 2,我应该使用 VisualTreeHelper 找到三个文本框。

正常的解决方案是订阅选择更改事件并通过树来获取新显示的控件。问题是,此时此刻,视觉树仍然有旧选项卡,使得这个搜索毫无价值。

如何拦截显示新 TabItem 并触发我的搜索的时刻?

我正在创建一个动态验证引擎,它监视给定 UI 的所有输入控件,即使它因 ContentControl 模板更改或 TabControl 选定选项卡更改而发生更改......我希望你能得到图片。

有任何想法吗?

0 投票
2 回答
1165 浏览

wpf - WPF RibbonComboBox 高度

好的,我原以为这是一个简单的问题,但显然它让我感到困惑。

当我尝试设置 RibbonComboBox 的高度时,它并没有移动它的实际大小,只是围绕它的框。

替代文字

这是我的 XAML:

我可以将高度更改为 200 或 1,但高度永远不会改变。

我究竟做错了什么?

谢谢, 埃罗克

0 投票
3 回答
1319 浏览

wpf - 如何对使用 VisualTreeHelper 的东西进行单元测试?

我有这个静态辅助函数:

它适用于实际应用程序,但我正在尝试为它编写一些单元测试。这是我的第一次尝试:

不幸的是它失败了,因为VisualTreeHelper它返回 null。我如何模拟一个可以工作的可视化树?

0 投票
0 回答
436 浏览

c# - 好奇是否有另一种方法来验证 ListView 中的所有文本框

这是我所拥有的......显示的是 ListView 的一部分。当前发生的情况是:用户单击“新建”按钮以创建新行。在单击“保存”按钮之前,用户可能会也可能不会在包含的文本框/组合框中输入信息。单击 Save 按钮时,将执行下面的 C# 代码,该代码使用 VisualTreeHelper 查找 ListView 中的所有 TextBoxes/ComboBoxes,并确保用户已输入文本/选择了一个项目。如果他们没有,它会将 BorderBrush 设置为红色并阻止 ObjectContext 保存更改。我知道在某些情况下您可以使用 ValidationRule ......但我无法弄清楚如何让它验证在单击“保存”按钮之前从未选择/更改过的新行。这可行,但很好奇是否有更优雅的方式。

XAML

C#

0 投票
1 回答
328 浏览

silverlight - 横向 VisualTreeHelper Hit 测试的问题

当用户在屏幕上滑动手指时,我使用 FindElementsInHostCoordinates 方法来查找元素。我注意到如果手机是纵向的,它会做出反应。例如 - 当我向上移动手指时,它会向下移动,当我向右移动手指时,它会向左移动。如果我在手机的下半部分,它也只会做一些事情。所以我认为如果找到我在横向中击中的坐标,但就像我在纵向中一样。有谁知道为什么会这样?

0 投票
1 回答
1098 浏览

wpf - WPF 3.5 嵌套数据网格行详细信息未显示在可视树中

所以我构建了一个漂亮的嵌套数据网格,看起来像这样:

由于 RowDetailsVisibilityMode 属性设置为 VisibleWhenSelected 时,行的节点 DataGridDetailsPresenter 有 0 个子节点。当属性设置为可见时,我可以看到 DataGridDetailsPresenter 子级。

当 RowDetailsVisibilityMode 属性为 VisibleWhenSelected 时,如何强制包含可视树中的所有节点?

非常感谢任何输入。

0 投票
2 回答
2385 浏览

.net - FrameworkElement.Parent 和 VisualtreeHelper.GetParent 的行为不同

在 WP7 应用程序中,我递归地使用 FrameworkElement.Parent 来确定特定元素是否在另一个元素内。但它并不总是正常工作。然后我更改了我的代码以递归地使用 VisualtreeHelper.GetParent 方法,并且它始终可以正常工作(据我测试)。

那么它们有什么区别呢?

谢谢

0 投票
1 回答
2272 浏览

c# - Silverlight 4 - 视觉树助手返回 0 个子元素?

我有以下代码应该在某物内部找到一个元素。问题是我有一个 DataGrid,它的第一列的标题中有一个 CheckBox。复选框本身定义在一个样式中,该样式存在于<controls:ChildWindow.Resources>父子窗口的字典中。

在运行时,如果网格的绑定集合的所有元素都被“选中”,那么我需要选中该死的复选框。但是,由于复选框存在于样式中,因此不容易访问,因此我需要遍历整个 DOM 以找到特定的复选框。

这是实现 DOM 遍历的代码。它是作为 FrameworkElement 的扩展方法实现的,因此我可以从任何继承自的控件调用 FindElement 或 GetChildren 方法FrameworkElement

所以手头的问题是,当我按照它的方式调用某些东西时,SomeDataGrid.FindElement("HeaderCheckBox");它总是返回一个空值。这里的假设是我有一个名为 SomeDataGrid 的 DataGrid 和一个在名为 HeaderCheckBox 的样式中定义的 CheckBox。

经过进一步调试,我还发现无论我从哪个控件调用这些扩展方法,VisualTreeHelper.GetChildrenCount我代码中最后两个方法中使用的方法调用总是返回 0 ??? 怎么回事?

任何人都知道如何解决这个问题?谢谢,马丁