我有一个椭圆(prew),我想通过标签("p")从canvas(canvas1)中删除.我试过这个,但它不起作用:
var child = (from c in canvas1.Children
where "p".Equals(c.Tag)
select c).First();
canvas1.Children.Remove(child);
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
"找不到源类型'System.Windows.Controls.UIElementCollection’.'如果’未找到查询模式的实现.考虑显式指定范围变量'C’的类型."
如何canvas通过标签删除孩子?
这些UIElementCollection实现IEnumerable是旧的,因此默认情况下与LINQ不兼容.IEnumerable<T>在查询之前,您需要将其转换为强类型
var child = (from c in canvas1.Children.Cast<FrameworkElement>()
where "p".Equals(c.Tag)
select c).First();
canvas1.Children.Remove(child);
Run Code Online (Sandbox Code Playgroud)
请注意,如果FrameworkElement集合中存在非代码,则此代码对于运行时错误是可疑的(另一个派生UIElement).为了防止这种情况,你可能最好去那个OfType方法
var child = (from c in canvas1.Children.OfType<FrameworkElement>()
where "p".Equals(c.Tag)
select c).First();
canvas1.Children.Remove(child);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2092 次 |
| 最近记录: |