2
public partial class Window2 : Window
{
    int margin = 200;
    public Window2()
    {
        this.InitializeComponent();

        for (int i = 1; i <= 5; i++)
        {
            TextBlock DynamicLine = new TextBlock();
            DynamicLine.Name = "lbl_DynamicLine" + i;
            DynamicLine.Width = 600;
            DynamicLine.Height = 20;
            DynamicLine.Text =i+"Dynamic TextBlock";
            DynamicLine.Margin = new Thickness(50, margin, 0, 0);
            margin = margin + 20;

            LayoutRoot.Children.Add(DynamicLine);

        }
    }
}

以下のようにテキストブロックを動的に削除しようとしました。

LayoutRoot.Children.Remove(DynamicLine);

しかし、上記のコード行でのみ、最後に作成されたテキストブロックを削除できます.今、すべてのテキストブロックを動的に削除したいと思います. そのために私は何をすべきか。

4

3 に答える 3

2

このコードを試してください

public partial class Window2 : Window
{
    int margin = 200;
    TextBlock DynamicLine;
    public Window2()
    {
        this.InitializeComponent();

        for (int i = 1; i <= 5; i++)
        {
            DynamicLine = new TextBlock();
            DynamicLine.Name = "lbl_DynamicLine" + i;
            RegisterName(DynamicLine.Name, DynamicLine);
            DynamicLine.Width = 600;
            DynamicLine.Height = 20;
            DynamicLine.Text =i+"Dynamic TextBlock";
            DynamicLine.Margin = new Thickness(50, margin, 0, 0);
            margin = margin + 20;

            LayoutRoot.Children.Add(DynamicLine);             

        }

        for (int i = 1; i <= 5; i++)
        {
            DynamicLine = (TextBlock)this.FindName("lbl_DynamicLine" + i);
            LayoutRoot.Children.Remove(DynamicLine);
        }

    }
}
于 2012-07-20T11:42:55.307 に答える
1

すべての子を削除するには、clear メソッドを呼び出す必要があります。

LayoutRoot.Children.Clear();
于 2012-07-20T10:46:57.250 に答える
0
for (int i = LayoutRoot.Children.Count; i > 0; i--)
{
    LayoutRoot.Children.RemoveAt(i-1);
}
于 2012-07-20T10:45:43.387 に答える