在字符串中知道控件名称时,在运行时查找控件

时间:2012-01-02 09:28:56

标签: c# wpf wpf-controls

我动态创建了一个超链接,如下所示

 Hyperlink objHyperlink = new Hyperlink();

取决于我需要将现有超链接设置为objHyperlink

的键值
 if key == "Markets"
 then hyperlink to be set is  hyplnkIsActiveMarkets
 if key =="Budgets"
 then hyperlink to be set is  hyplnkIsActiveBudgets

我的问题是如何在运行时获得控制权,我知道它的名字是“hyplnkIsActive”+“Markets”(“市场”来自钥匙)

类似于FindControlByname("hyplnkIsActive"+"Markets");

3 个答案:

答案 0 :(得分:1)

试试这个

var myControl = (Control)this.FindName("Control Name");

答案 1 :(得分:0)

如果您有所有可用超链接的列表,请尝试使用

Hyperlink FindLinkByName(IEnumerable<Hyperlink> links,string linkName)
{
  return links
        .FirstOrDefault
         ( 
            link => Equals(link.GetValue(FrameworkElement.NameProperty),linkName) 
         );
}

你可以这样称呼它:

FindLinkByName(list of links, "hyplnkIsActive"+"Markets")

答案 2 :(得分:-1)

将创建的控件保存在包含键和对象的哈希表中。 这是禁食方法