как можно создать коллекцию из элементов управления двумя холстами - PullRequest
0 голосов
/ 06 ноября 2010

Я создал приложение wpf, есть два холста, которые я хотел бы сохранить в обеих коллекциях элементов управления cancas, чтобы я мог обрабатывать их без двух циклов.Каков наилучший метод для реализации этого.

Ответы [ 2 ]

1 голос
/ 06 ноября 2010

Вы можете использовать оператор LINQ Union, чтобы объединить две коллекции Canvas.Children в одну:

for (UIElement child in canvasOne.Children.Cast<UIElement>()
                                     .Union
                       (canvasTwo.Children.Cast<UIElement>()))
{
    ...
}

Обратите внимание на следующее:

  • Кодпоказанный фактически не создает новую, изменчивую коллекцию, которую вы можете изменить;он просто устанавливает IEnumerable<UIElement> так, что вы можете перебирать элементы обеих коллекций за один раз.То есть будут доступны две существующие коллекции, а не новая.

  • Оператор Cast<UIElement> необходим, поскольку Canvas.Children не реализует IEnumerable<T>, а только IEnumerable.

  • Вам нужно сослаться на сборку System.Core.dll в вашем проекте и импортировать пространство имен System.Linq в файл кода, чтобы это работало.

0 голосов
/ 06 ноября 2010

просто посмотрите на эту ссылку

Как получить доступ к дочерним элементам класса WPF Canvas?

таким образом вы можете получить дочерние элементы из холста, и выможно создать коллекцию, используя это.

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