访问List <uielement> </uielement>中的UIElement.Properties

时间:2011-04-04 03:16:16

标签: c# wpf arrays list uielement

我在运行时创建了多个Canvas,每个Canvas都有一个TextBox作为子项。这些CanvasWrapPanel的孩子。我的代码如下:

List<Canvas> cvList = new List<Canvas>();
WrapPanel wp = new WrapPanel();

// function (e.g. a Click event) to add a Canvas with a TextBox
Canvas cv = new Canvas();
TextBox tb = new TextBox();
cv.Children.Add(tb);
cvList.Add(cv);
wp.Children.Add(cv);

如果在处理完10次函数并创建了10个Canvas后,我需要更改一个特定UIElement的文本(例如第5个TextBox)。我该怎么办?在数组中没有像这样使用的索引。

[编辑] 如果我还在运行时生成按钮单击事件,则每个按钮将关闭其对应的Canvas:

List<Button> btnList = new List<Button>();

// function to add Canvas with a Button
Button btn = new Button();
btn.Content = "Destroy";
btn.Click += destroy_Click;
btnList.Add(btn);
cv.Children.Add(btn);

// Destroy click event
private void destroy_Click(object sender, RoutedEventArgs e)
{
if (sender == ????)
{}
}

我应该将发件人与哪些人进行比较?

1 个答案:

答案 0 :(得分:2)

当我试图在您的last question(您可能应该更新)中解释时,您不需要单独的列表,只需直接使用WrapPanel访问其子女 - 您知道您只在Canvas添加了WrapPanel元素,因此您可以进行适当的投射:

TextBox textbox = (wp.Children[5] as Canvas).Children[0] as TextBox;
textbox.Text = "Hello";