0

メイングリッドにループで子を追加しています。しかし、どうすればそれらを削除できますか? 関数が呼び出されるたびに追加した子のみを削除してから、新しい子を追加したいと考えています。

void flcl_Selection(object sender, MyEventArgs e)
    {
        //remove children here     
        for (int i = 0; i < e.MyFirstString.Count; i ++)
        {
            LabelCountry lbl = new LabelCountry((string)e.MyFirstString[i]);
            MainGrid.Children.Add(lbl);
        }
    }
4

2 に答える 2

4

追加された要素を削除できるようにするには、それらを保存する必要があります。例えば:

private List<LabelCountry> addedElements = new List<LabelCountry>();

void flcl_Selection(object sender, MyEventArgs e)
{
    //remove old items
    foreach(LabelCountry element in addedElements)
    {
        MainGrid.Children.Remove(element);
    }
    addedElements.Clear();
    // add new items
    for (int i = 0; i < e.MyFirstString.Count; i ++)
    {
        LabelCountry lbl = new LabelCountry((string)e.MyFirstString[i]);
        addedElements.Add(lbl)
        MainGrid.Children.Add(lbl);
    }
}
于 2013-04-29T07:25:10.017 に答える
2
private List<object> _addedItems = new List<object>();

void flcl_Selection(object sender, MyEventArgs e)
{
    //remove children here     
    foreach(var item in _addedItems)
    {
        MainGrid.Children.Remove(item);
    }
    _addedItems = new List<object>();

    for (int i = 0; i < e.MyFirstString.Count; i ++)
    {
        LabelCountry lbl = new LabelCountry((string)e.MyFirstString[i]);
        MainGrid.Children.Add(lbl);
        _addedItems.Add(lbl);
    }
}
于 2013-04-29T07:25:47.840 に答える