привет есть код.хочу пройтись по элементам грида а именно по Image
foreach ( var item in mainGrid.Children)
{
if (item.GetType() == Image) { }
}
питаюсь так но что не выходит как правилиьно
if (item.Equals(typeof(Image)))
{
}
вроде так норм но как теперь у Image убрать картинку которая задана как Source
то есть я думаю убрать источник так
oneImage.Source = null;
но как это в цикле организовать
Можете использовать класс VisualTreeHelper для работы с визуальным деревом.
Метод GetChild позволяет получить детей указанного элемента, ну а там уже делаете с детьми все, что пожелаете.
xaml:
<Grid x:Name="grid1">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Image Grid.Row="0" Source="image/1.png"/>
<Image Grid.Row="1" Source="image/2.png" />
<Button Grid.Row="3" Content="Clear Images" Click="Button_Click" />
</Grid>
code-behind:
private void Button_Click(object sender, RoutedEventArgs e)
{
int childrenCount = VisualTreeHelper.GetChildrenCount(grid1);
for (int i = 0; i < childrenCount; i++)
{
var current = VisualTreeHelper.GetChild(grid1, i);
var image = current as Image;
if (image != null)
{
image.Source = null;
}
}
}
Ну или просто:
foreach (var gridChild in grid1.Children)
{
var image = gridChild as Image;
if (image != null)
{
image.Source = null;
}
}
Чтобы получить прямо все-все Image, которые находятся в гриде, независимо от уровня вложенности, можно воспользоваться этим методом:
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}
Код нажатия на кнопку будет выглядеть следующим образом:
private void Button_Click(object sender, RoutedEventArgs e)
{
foreach (Image image in FindVisualChildren<Image>(grid1))
{
image.Source = null;
}
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники