visual vacio limpiar imagen cuadro como borrar c# .net wpf image wpf-controls

c# - vacio - Eliminar todas las imágenes añadidas al lienzo.



limpiar picturebox visual (2)

¿Quieres decir que solo quieres eliminar todos los elementos secundarios?

canvas.Children.Clear();

Parece que debería hacer el trabajo.

EDITAR: Si solo desea eliminar los elementos de la Image , puede utilizar:

var images = canvas.Children.OfType<Image>().ToList(); foreach (var image in images) { canvas.Children.Remove(image); }

Sin embargo, esto supone que todas las imágenes son elementos secundarios directos ; si desea eliminar los elementos de Image otros elementos, se vuelve más complicado.

¿Existe una forma posible de eliminar (eliminar) todas las imágenes (niños) agregadas a un Canvas en C # (en WFP)?


Dado que la colección secundaria de un Canvas es una colección UIElement y hay muchos otros controles que utilizan este tipo de colección, podríamos agregar el método de eliminación a todos ellos con un método de extensión.

public static class CanvasExtensions { /// <summary> /// Removes all instances of a type of object from the children collection. /// </summary> /// <typeparam name="T">The type of object you want to remove.</typeparam> /// <param name="targetCollection">A reference to the canvas you want items removed from.</param> public static void Remove<T>(this UIElementCollection targetCollection) { // This will loop to the end of the children collection. int index = 0; // Loop over every element in the children collection. while (index < targetCollection.Count) { // Remove the item if it''s of type T if (targetCollection[index] is T) targetCollection.RemoveAt(index); else index++; } } }

Cuando esta clase está presente, simplemente puede eliminar todas las imágenes (o cualquier otro tipo de objeto) con la línea.

testCanvas.Children.Remove<Image>();