2012-10-13 32 views
0

我有一个List<T>与一些UserControl s。 在主窗口上有一个Grid和一些UserControl将被添加到Grid.Children。 现在我希望能够从此Grid中删除特定的UserControl,例如,我想做这样的事情从Grid.Children中删除特定的对象实例?

layoutRoot.Children.Remove(controlList[1]); 

这可能吗? 我只知道FindName()FindResource(),但让我不能提前使用这些方法:(

感谢所有UserControl都不具备的名字!

+1

你尝试过这个 – codingbiz

+0

是的,我试过'FindName()'通过传递'UserControl'但是值的'Name'值每个UserControl都是“”。 也许我做错了什么,不知道...... – TorbenJ

+1

我的意思是'layoutRoot.Children.Remove(controlList [1]);' – codingbiz

回答

1

只是一个想法,让你开始,如果你知道自己的用户控件的类型,你可以用这样的方法:

static T FindVisualChild<T>(Visual parent) where T : Visual 
{ 
    T child = default(T); 
    int numVisuals = VisualTreeHelper.GetChildrenCount(parent); 
    for (int i = 0; i < numVisuals; i++) 
    { 
     var visual = (Visual)VisualTreeHelper.GetChild(parent, i); 

     child = visual as T; 
     if (child == null) 
      child = FindVisualChild<T>(visual); 
     if (child != null) 
      break; 
    } 
    return child; 
} 
相关问题