问题标签 [findname]

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 投票
2 回答
3405 浏览

silverlight - Silverlight 的 DataTemplate 中缺少 FindName 方法是否有解决方法?

根据 C# 编译器和 Silverlight 2 文档,Silverlight 没有为 DataTemplate 类提供 FindName 方法。我想在 ContentPresenter 中找到一个边框。SilverLight 2 中最好的方法是什么?

0 投票
1 回答
3559 浏览

wpf - 在 TreeView 中查找 ItemTemplate 控件

我的树定义是:

有一个 TreeViewItem 元素,我尝试找到相应的 CheckBox,但是

投掷

给我null。什么是正确的解决方案?

0 投票
1 回答
1139 浏览

.net - WPF - TreeView.FindName() 问题

为什么 TreeView.FindName() 可以在编译时找到添加到 Xaml 文档但在运行时动态添加的内容?

0 投票
3 回答
8486 浏览

c# - 如何查找 UserControl 而不是 Window 的子项 - 替换 Window.FindName

我目前有一个 WPF 项目,它有一个主窗口和许多用户控件,它们是这个窗口的子窗口。此窗口的许多子项都是选项卡。我已经成功地用一个用户控件替换了我的主窗口,它实现了与主窗口几乎完全相同的功能。

Window.FindName用 UserControl 替换 Window 引入了一个问题 - 目前我们的应用程序通过使用下面显示的方法根据父窗口确定要显示哪个编程选项卡。因此,我需要Application.Current.MainWindow用我的主要用户控件的适当描述替换 。请参阅下面的错误 C# 方法和选项卡的 wpf 实例化以进行说明。

注意关于 Window.FindName() 方法- 我用 UserControl 替换它后它不起作用的原因是 FindName 方法在可视树中向上搜索,如此处所述

有谁知道如何根据 x:Name 找到用户控件,类似于Application.Current.MainWindow?此外,有没有比查找 x:Name 字符串更好的方法来查找 UserControl,以防它被重命名?

我们目前如何找到 MainWindow - 现在需要找到 MainUserControl:

编程选项卡的实例化。

0 投票
1 回答
8159 浏览

c# - 为什么 Window.FindName() 没有发现子 UserControl 中按钮的 x:Name?AKA NameScopes 是如何工作的?

因此,在下面的示例代码中,我创建了一个 UserControl UserControldChild,它是主窗口 Window1.xaml 的子窗口。为什么该FindName()方法无法在下面的代码中找到“myButton”?

这一定与WPF XAML NameScopes有关,但我还没有找到关于 NameScope 如何工作的好的解释。有人可以启发我吗?

下面的用户控件:

万一这没有得到正确回答,我找到了使用此处帖子中记录的FindName() 的替代方法。

0 投票
2 回答
1673 浏览

wpf - WPF Combox.FindName() 不起作用

我有两个组合框。我在 Xaml 中填写的第一个项目:

和函数 ddl_pageType.FindName("Website"); 作品。

我填充的第二个组合框:

其中 proglist 是列表。在这里,函数 ddl_cniProg.FindName(string) 不起作用。

我需要做什么才能从 dd_cniprog 获取项目?

0 投票
8 回答
34836 浏览

c# - WPF - FindName 不应该返回 null

FindName 对我来说坏了:(

我要找的对象就在那里。我有证据。

这是场景:

popup为空,但并非总是如此。只是偶尔。但即使它设置为 null 我正在寻找的孩子也在那里。

我在它为空时设置了一个断点并抓取了这两个屏幕截图。

这是 FindName 为“popSelectIteration”返回 null 的地方。

但如果你深入手表,你会看到孩子在那里。

那么我错过了什么?为什么 FindName 找不到它?正如您从屏幕截图中看到的,这不是时间问题(FindName 手表为空,但直接路径很好)。

有没有更好的方法来找到控件?

旁注:如果您对相关切换按钮的 XAML 感兴趣,可以在以下问题中找到它:WPF - FrameworkElement - Enumerate all decendents? .


更新:我做了一些挖掘,看看为什么这有时会失败,而有时它会起作用。我有一个调用的动画(此处NameScope.SetNameScope((DependencyObject)form, new NameScope());的完整方法代码)。在那次调用之后,FindName 开始失败。

我真的不明白那个电话。我想我复制并粘贴了代码。不管怎样,我把它注释掉了。但我很想知道为什么这会失败。

0 投票
2 回答
5691 浏览

wpf - 访问 DataTemplate 中的元素...如何处理多个 DataTemplate?

我为列表框控件定义了 2 个数据模板。1 个模板用于未选定状态,另一个用于选定状态(显示比未选定状态更详细的信息)。

我按照这里的例子:

http://blogs.msdn.com/b/wpfsdk/archive/2007/04/16/how-do-i-programmatically-interact-with-template-generated-elements-part-ii.aspx

关于如何从后面的代码访问 DataTemplates 中的元素。

我猜对了,但它只找到并返回 UnSelected DataTemplate 的一个元素。但是当我在 Selected DataTemplate 中搜索一个元素时,我得到一个 NullReferenceException。

我可能做错了什么?

0 投票
1 回答
1394 浏览

silverlight - UserControl 子控件和 FindName

我有一个 Silverlight UserControl,它使用 ContentPropertyAttribute 来公开其中一个子面板的 Children 属性。这允许我将子控件添加到页面上的面板:

除了存在但未初始化的页面的“tbTest”字段之外,这有效。仔细检查后,InitializeComponent 方法确实尝试定位 TextBox(使用 FindName),但没有这样做(返回 null)。

经过一番调查,我发现名称范围是问题所在 - UserControl 有它自己的名称范围,因此无法使用页面的 FindName 找到它的子级,但可以使用 UserControl 的 FindName 方法。

如何更改我的 UserControl 以便可以通过 InitializeComponent 方法定位子控件?标准的面板(StackPanel、Grid等)这样做似乎没有任何问题,那么一定有解决方案吗?

谢谢

0 投票
1 回答
2001 浏览

wpf - 通过 FindName() 查找动态生成的 Wcf 控件

在父控件中查找控件的 FramworkElement.FindName() 方法似乎应该直截了当......

但是我正在提高anty,似乎框架不喜欢我正在尝试做的事情。

首先,我确实意识到有很多不同的做事方式,请记住这是我在 WPF 中创建的第一个表单。

我正在根据集合中的项目数将控件加载到 StackPanel 中。此方法是必须的,因为集合由 [用户输入的 Url] 中的目录数量决定。

该列表将水平堆栈面板构建为在设计期间放置在表单上的垂直堆栈面板。

所以 dirStackPanel 在表单上。我将 controlStackPanel 插入 dirStackPanel n 次,并用识别名称命名每个:(字符串)(“controlStackPanel”+ n)。

我也在用控件填充 controlStackPanel,但考虑到我无法按名称从其父级 (dirStackPanel) 检索 controlstackPanel,这是一个有争议的问题。

例子:

var getPanel = (StackPanel) this.dirStackPanel.FindName((string)("controlStackPanel" + n))返回空值

需要明确的是,我在运行时插入的每个控件都被分配了一个名称,并且可以使用循环轻松检索。但是 FindName 方法不适用于父“StackPanel”的第一个子控件。它不断返回 null 而不是对象。

有任何想法吗?