引用动态创建的控件?

时间:2012-07-12 20:56:11

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

我知道如何在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";
  

“参数不正确。”

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

异常"参数不正确。"可能正在发生,因为创建的控件的名称重复。

对于动态控制部分:您必须将该控件添加到某些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复制过来,所以请检查语法和拼写。)

答案 1 :(得分:0)

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