【问题标题】:How to loop through UIElement in a List<UIElement>?如何遍历 List<UIElement> 中的 UIElement?
【发布时间】:2013-08-19 07:11:51
【问题描述】:

我有一个包含Canvas 的列表,其中还包含一些UIElement,如下所示:

List<Canvas> cvList = new List<Canvas>();
Canvas cv = new Canvas();
cv.Width = 100;
cv.Height = 100;
Button btn = new Button();
btn.Content = "OK";
cv.Children.Add(btn);
cvList.Add(cv);

Canvas 的数组大小是动态且不可变的,这就是我使用 List 而不是 Array 的原因。

我的问题是,如果我要修改一个 UIElement(即 Button.Content)的属性,我该如何访问 Button 属性?如果它是一个数组,我可以简单地遍历数组并找到一个匹配的索引,如下所示:

Canvas[] cv = new Canvas[myInt];
Button[] btn = new Button[myInt];
for (int i = 0; i<myInt; i++)
{
cv[i] = new Canvas();
btn[i] = new Button();
btn[i].Content = "OK";
cv[i].Children.Add(btn[i]);
}
btn[5].Content = "Not OK";

但是对于 List 中的 UIElement,我该怎么做呢?

List<UIElement>[int].UIElement.Properties

【问题讨论】:

    标签: c# wpf list uielement


    【解决方案1】:

    您会以完全相同的方式进行操作。您可以循环并找到匹配的索引。

    foreach (Canvas c in cvList) {
        // Do something.
    }
    

    【讨论】:

    • 但是如何访问画布内的按钮?我是否必须为要更改其属性的每个 UIElement 执行一个 foreach 循环?
    • 访问画布内的按钮的方式与画布位于数组中的方式相同——例如,Button btn = c.Children.OfType&lt;Button&gt;().First();
    【解决方案2】:

    此代码适用于列表和数组:

    for (int i = 0; i<myInt; i++)
    {
        cv[i].Content = "Hello";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 2015-03-10
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多