首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows Phone 7编程中使用foreach?

在Windows Phone 7编程中使用foreach?
EN

Stack Overflow用户
提问于 2011-10-24 01:32:59
回答 3查看 1.7K关注 0票数 1

我用C#做了一个叫Isola的游戏,现在我想用WP7再做一个。在C# "Windows form“开发中,你可以像这样使用这个foreach循环:

代码语言:javascript
复制
foreach (Button btn in this.Controls)

{item.enabled = true;}

我怎么能用WP7写这个呢,因为它不像Foreach循环,而且“控件”也不存在?

EN

回答 3

Stack Overflow用户

发布于 2011-10-24 01:48:05

在SilverLight (XAML)中,主控件(页面、窗口、UserControl)是ContentControl类型。

假设你有一个网格( PanelControl,StackPanel,..)作为根目录的直接内容,您可以这样做:

代码语言:javascript
复制
foreach (var element in (this.Content as Panel).Children)
{
   if (element is Button) ...
}

这将在以下位置找到按钮

代码语言:javascript
复制
<UserControl ... >
   <Grid>
      <Button ... />
   </Grid>
</UserControl>

但是对于嵌套元素上的按钮,您将需要一个递归方法。

票数 3
EN

Stack Overflow用户

发布于 2011-10-24 01:49:18

StackPanel (您提到的唯一特定的使用)定义了一个Children property,它可能会执行您正在寻找的操作。

票数 0
EN

Stack Overflow用户

发布于 2011-10-24 01:52:17

从你发布的信息来看,我猜你用的是WinForms。在WP7上,UI框架是Silverlight,这与Windows Forms有很大的不同。你的foreach没有什么问题,WP7或多或少使用了.NET Framework3.0,当然这支持foreach语句。我的猜测是,你的foreach的“问题”更多的是一个相应的错误。

你的控件集合确实已经不存在了。相反,您有一个Children集合,但它与Controls集合有很大的不同,您可能已经习惯了。我建议你多读一读Trees in WPF,它也适用于Silverlight。此外,我强烈建议不要尝试像这样改变行为。你手头上有更好更强大的工具使用Silverlight,比如BindingsCommands

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7867857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档