Получить все элементы изображения в Grid-> Canvas, используя LINQ? - PullRequest
2 голосов
/ 22 марта 2011

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

например:

<Grid>
  <Canvas>
    <Image />
    <Image />
  </Canvas>
  <Canvas>
    <Textblock />
    <Textblock />
  </Canvas>
</Grid>

Теперь мне нужно получить все элементы изображения в сетке. В настоящее время я использую несколько циклов foreach и if-операторов для достижения этой цели. Но я спрашивал себя, не существует ли более элегантного способа использования LINQ, так что извлекайте все элементы изображения из таблицы. Но, к сожалению, мои знания LINQ не так хороши, поэтому я не нашел способа донести до них элемент Холста.

Может быть, у кого-то есть хорошее решение для этого.

Заранее спасибо и всего наилучшего

Kornelis

1 Ответ

1 голос
/ 23 марта 2011

Я добавил имя в сетку для ссылки в ссылке

<Grid Name="MyGrid">

Затем этот linq возвращает изображения внутри полотен, которые являются дочерними элементами сетки. Я преобразовал его как объект, чтобы он мог запрашивать все элементы управления, которые были в коллекции Children.

IEnumerable<Image> results = (from c in MyGrid.Children.Cast<Object>()
                                where c.GetType() == typeof(Canvas)
                                select c).Cast<Canvas>()       
     .SelectMany(r => r.Children.Cast<object>()
     .Where(c => c.GetType() == typeof(Image))).Cast<Image>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...