- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 wpf 4.0 中有 UserControl,其中包含按钮、标签、文本框等......
我想循环这些控件,当我得到一个按钮时,我想取它的名字并将其保存到我的列表中。基本上,我要做的就是在 UserControl 中创建一个包含所有按钮的 Names_list。
我有一个迭代所有控件的方法,如果它找到一个按钮,它会保存它的名称 -
public void EnumVisual(Visual myVisual)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
Button _button = childVisual as Button;
if (_button != null)
{
Class_Button _newButtonClass = new Class_Button();
if (_button.Name != null)
{
_newButtonClass.ButtonName = _button.Name;
}
ButtonsList.Add(_newButtonClass);
}
// Enumerate children of the child visual object.
EnumVisual(childVisual);
}
}
最佳答案
正如@GazTheDestroyer 所建议的那样,您要确保在尝试使用 VisualTreeHelper 之前已应用控制模板。尝试:
public void EnumVisual(Visual myVisual)
{
if(myVisual is FrameworkElement)
((FrameworkElement)myVisual).ApplyTemplate();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
Button _button = childVisual as Button;
if (_button != null)
{
Class_Button _newButtonClass = new Class_Button();
if (_button.Name != null)
{
_newButtonClass.ButtonName = _button.Name;
}
ButtonsList.Add(_newButtonClass);
}
// Enumerate children of the child visual object.
EnumVisual(childVisual);
}
}
关于wpf - 在 VisualTreeHelper 中看不到用户控件内的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9870560/
我有这个静态辅助函数: public static DependencyObject GetParentObject(DependencyObject child) {
我定义了以下 XAML。
我在 wpf 4.0 中有 UserControl,其中包含按钮、标签、文本框等...... 我想循环这些控件,当我得到一个按钮时,我想取它的名字并将其保存到我的列表中。基本上,我要做的就是在 Use
在可视化树中垂直和水平搜索最简单的方法是什么? 例如,我想从开始搜索的控件中找到一个不在父列表中的控件。 这是一个简单的示例(每个框代表一些 UI 控件): 例如,我从一个嵌套控件开始(Search-
我想在某些形状上使用 WPF HitTest 功能而不在屏幕上显示它们。这可能吗?此代码无法按我预期的方式工作。我该如何进行这项工作? [Test, Ignore, RequiresSTA] publ
在我的应用程序中,在 Viewport3D 对象之上有一个透明的 InkCanvas。 Viewport3D 显示了一个大的 3D 网格。用户将在 InkCanvas 上绘制草图,以便选择 Viewp
我正在使用 VisualTreeHelper.GetChildrenCount() 来查找子控件,但它总是返回 0。 这是我的代码
我有以下 C# 代码来查找 DepedendencyObject 的子项: public static IEnumerable FindVisualChildren(DependencyObject
我正在尝试在 Canvas 上对一堆用户控件进行 HitTest 。我不希望 HitTest() 全程遍历可视化树,因此我使用 FilterCallback 来确保只对 UserControl 进行
我有一个 ContentDialog,它有一个 ListView。此 ListView 的 DataTemplate 包含一个Grid,此Grid 有一个Button。代码是这样的:
在 WP7 应用程序中,我以递归方式使用 FrameworkElement.Parent 来确定特定元素是否在另一个元素内。但它并不总是能正常工作。 然后我将代码更改为递归使用 VisualtreeH
我修改了已接受答案中的代码 here返回第一个找到的某种类型的控件。但是,当我尝试从窗口本身开始遍历时,VisualTreeHelper.GetChildrenCount 返回 0,尽管上面放置了一个
如何提取 ListBoxItem 的父容器? 在下面的例子中,我可以去到 ListBoxItem,比它更高,我什么都没有: Private Sub B
我试图从我的 Silverlight for WP7 应用程序中的坐标中找到 UIElement。 这是我的 XAML:
我将焦点移至打开的 Popup: wcl:FocusHelper.IsFocused="{Binding RelativeSource={RelativeSource Self}, Path=IsOp
只是好奇——表面上看起来更尴尬,更不容易被发现,但有充分的理由吗? 最佳答案 我认为它是有意混淆了一点,因为大多数时候你不应该直接摆弄可视化树,符合“框架设计指南”“常用类应该遵循基本场景”的理念。
我是一名优秀的程序员,十分优秀!