我正在动态地将子项添加到我的stackpanel。我需要的是,我想在某些情况下删除最后一个孩子。有没有选择让最后一个孩子?
这是我的代码:
var row = new somecontrol();
stackpanel.Children.Add(row);
有没有办法删除children.lastOrDefault()?
stackpanel.Children.Last();
任何帮助将不胜感激。提前谢谢。
答案 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解决方案会更好。