Используете foreach в Windows Phone 7 для программирования? - PullRequest
1 голос
/ 23 октября 2011

Я сделал игру под названием Isola некоторое время в C #, теперь я хотел бы создать другую, но в WP7.В C # «Форме Windows» вы можете использовать этот цикл foreach следующим образом:

foreach (Button btn in this.Controls)

{item.enabled = true;}

Как я могу написать это в WP7, так как ему не нравится цикл Foreach и «Controls» не существует???

Ответы [ 3 ]

3 голосов
/ 23 октября 2011

В SilverLight (XAML) основной элемент управления (Page, Window, UserControl) имеет тип ContentControl.

Предполагается, что PanelControl (Grid, StackPanel, ..) в качестве непосредственного содержимого корняможет сделать что-то вроде:

foreach (var element in (this.Content as Panel).Children)
{
   if (element is Button) ...
}

. Кнопка будет найдена в

<UserControl ... >
   <Grid>
      <Button ... />
   </Grid>
</UserControl>

, но для кнопок на вложенных элементах вам понадобится рекурсивный метод.

0 голосов
/ 23 октября 2011

Из того, что вы опубликовали, я думаю, вы использовали WinForms.В WP7 Framework пользовательского интерфейса - Silverlight, который сильно отличается от Windows Forms.В вашем foreach нет ничего плохого, WP7 использует более или менее .NET Framework 3.0, конечно, это поддерживает оператор foreach.Я предполагаю, что «проблемы» с вашим foreach - это скорее косвенные ошибки.

Ваша коллекция Controls действительно больше не существует.Вместо этого у вас есть коллекция Children, но она сильно отличается от коллекции Controls, к которой вы могли бы привыкнуть.Я предлагаю вам прочитать больше в Деревьях в WPF , которые также действительны для Silverlight.Также я настоятельно советую не пытаться изменить поведение, как это.С помощью Silverlight у вас есть гораздо лучшие и более эффективные инструменты, такие как Bindings и Команды .

0 голосов
/ 23 октября 2011

A StackPanel (единственное конкретное упоминание, которое вы упомянули) определяет Children свойство , которое, вероятно, выполняет то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...