18

CanvasC#(WFP)でに追加されたすべての画像(子)を削除(削除)する方法はありますか?

4

2 に答える 2

37

子要素をすべて削除したいということですか?

canvas.Children.Clear();

それは仕事をする必要があるように見えます。

編集:要素のみを削除したい場合Imageは、以下を使用できます:

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

ただし、これはすべての画像が直接Imageの子要素であることを前提としています。他の要素の下にある要素を削除する場合は、注意が必要です。

于 2012-05-31T14:39:32.827 に答える
6

Canvasの子コレクションはUIElementCollectionであり、このタイプのコレクションを使用する他のコントロールがたくさんあるため、extensionメソッドを使用してそれらすべてにremoveメソッドを追加できます。

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++;
        }
    }
}

このクラスが存在する場合、線ですべての画像(または他のタイプのオブジェクト)を簡単に削除できます。

testCanvas.Children.Remove<Image>();
于 2012-05-31T14:58:22.667 に答える