如何从WPF中的堆栈面板中删除最后一个子项?

时间:2015-01-29 06:57:05

标签: c# wpf xaml stackpanel

我正在动态地将子项添加到我的stackpanel。我需要的是,我想在某些情况下删除最后一个孩子。有没有选择让最后一个孩子?

这是我的代码:

var row = new somecontrol();           
stackpanel.Children.Add(row); 

有没有办法删除children.lastOrDefault()?

stackpanel.Children.Last(); 

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:4)

怎么样:

if(stackpanel.Children.Count != 0)
    stackpanel.Children.RemoveAt(stackpanel.Children.Count - 1);

...或者如果你想使用Linq,只需使用OfType<> ExtensionMethod即可。那么你可以用你希望的Linq做任何事情,比如LastOrDefault

var child = stackpanel.Children.OfType<UIElement>().LastOrDefault();
if(child != null)
    stackpanel.Children.Remove(child);

但是,第一个可能是最快的。

如果您愿意,也可以制作自己的扩展方法:

class PanelExtensions
{
    public static void RemoveLast(this Panel panel)
    {
        if(panel.Children.Count != 0)
            panel.Children.RemoveAt(panel.Children.Count - 1);
    }
}

像这样使用

stackpanel.Children.RemoveLast();

但是和Xeun一样,提到一个带有Bindings的MVVM解决方案会更好。