Как динамически удалить текстовый блок в wpf

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);

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


person CHANDRA    schedule 20.07.2012    source источник
comment
Если у вас есть динамический контент, я бы не стал пытаться возиться с функциями управления wpf, вместо этого используйте фактическую поддержку WPF для динамического контента, такого как DataBinding, ObservableCollections, DataTemplates и т. д.   -  person dowhilefor    schedule 20.07.2012


Ответы (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);
        }

    }
}
person ASHOK A    schedule 20.07.2012

Чтобы удалить всех детей, вы должны вызвать метод clear.

LayoutRoot.Children.Clear();
person Botis    schedule 20.07.2012
comment
предположим, что я уже создал статический текстовый блок, он также удалит ваш код. - person CHANDRA; 20.07.2012
comment
Хм.. не совсем понимаю. Что вы имеете в виду под статикой? Итак, вы хотите удалить не все текстовые блоки, а только несколько? На основании чего? - person Botis; 23.07.2012