按名称查找WPF控件

时间:2012-09-02 18:26:26

标签: c# wpf

我正在寻求帮助,找到引用C#编程的控件的最佳方法

如果我预先在XAML中添加标签并将其命名为marketInfo,那么在代码中我可以将Tag属性设置为类似

marketInfo.Tag = timeNow;

但是,我正在构建控件并使用与

类似的东西为每个名称分配
System.Windows.Controls.Label lbl = new System.Windows.Controls.Label();
lbl.Content = market.name + " - " + DateTime.Now.ToLocalTime().ToLongTimeString();
lbl.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left;
lbl.Height = 40;
lbl.Name = @"_" + "marketInfo" + countMarket;

如何从其他方法引用这些控件?我已经阅读了一些建议使用visualtreehelper的帖子,但这似乎需要循环控件来查找特定控件。有没有办法按名称访问控件以避免循环?

例如与

类似的东西
//pseudo code
SomeControl("_marketInfo5").Tag = timeNow;

谢谢

2 个答案:

答案 0 :(得分:33)

至少有两种方法可以做到这一点:

答案 1 :(得分:0)

您可以使用XamlQuery在运行时查找控件。XamlQuery In CodePlex

XamlQuery.Search(RegisterGrid, "Label[Name=_marketInfo5]").SetValue(Control.TagProperty, timeNow);