【问题标题】:Referencing a dynamically created control?引用动态创建的控件?
【发布时间】:2012-07-12 17:12:06
【问题描述】:

我知道如何在c#中创建动态控件:

TextBlock tb = new TextBlock();
tb.Text = "This is a new textblock";

但是我如何通过代码引用这个新创建的控件呢? 我在网上浏览了一个解决方案,并遇到了这段代码:

TextBlock tb = (TextBlock)this.FindName("TB");
tb.Text = "Text property changed"; 

每次我创建一个带有名称的新控件时都会出现异常:

TextBlock tb = new TextBlock();
tb.Text = "This is a new textblock";
tb.Name = "TB";

“参数不正确。”

我做错了什么?任何帮助将不胜感激。

提前致谢。

【问题讨论】:

标签: c# windows-phone-7 dynamic controls


【解决方案1】:

是的,您可以通过这种方式使用引用动态控件。 但另一种方式是,您还可以在创建控件时保留引用列表。

【讨论】:

    【解决方案2】:

    异常“参数不正确”。可能是因为创建的控件名称重复。

    对于动态控件部分:您必须将该控件添加到某个 Grid 或 Stackpanel 或其他东西。您可以通过获取父控件的内容或子控件来引用该动态控件。

    喜欢:

    TextBlock Tb= new TextBlock();
    tb.Text = "Hello";
    
    ContentPanel.Children.Add(Tb);
    

    //参考:

    var content = ContentPanel.Children;
    foreach(UIElement uiElem in content)
    {
      if(uiElem.GetType() == typeof(TextBlock))
      {
         TextBlock tb = uiElem as TextBlock;
         tb.Text = "Hyee";
      }
    }
    

    希望,它可能会有所帮助。

    (注:这段代码我是直接写到这里的,不是从VS复制过来的,所以请检查语法和拼写。)

    【讨论】:

    • 谢谢乔尔.. 这是我第一个被选中的答案
    • 清晰而精彩的答案:)
    猜你喜欢
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2014-02-24
    • 2011-06-10
    • 2011-06-27
    • 2017-07-22
    • 1970-01-01
    • 2016-12-31
    相关资源
    最近更新 更多