我正在寻求一些帮助以找到引用在 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;
谢谢
最佳答案
至少有两种方法可以做到这一点:
使用
FindName
父容器找到控件的方法(但它会在内部涉及循环,就像 visualtreehelper)创建一个字典来存储您创建的每个控件的引用
var controls = new Dictionary<string, FrameworkElement>(); controls.Add("_marketInfo5", lbl);
然后你可以这样做:
controls["_marketInfo5"].Tag = timeNow;
关于c# - 按名称查找 WPF 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12238599/