C# 按标记移除画布子对象
我有一个椭圆(prew),我想通过标记(“p”)从画布(canvas1)中删除它。 我试过这个,但不起作用:C# 按标记移除画布子对象,c#,wpf,controls,C#,Wpf,Controls,我有一个椭圆(prew),我想通过标记(“p”)从画布(canvas1)中删除它。 我试过这个,但不起作用: var child = (from c in canvas1.Children where "p".Equals(c.Tag) select c).First(); canvas1.Children.Remove(child); 它给了我这个错误: “找不到源类型的查询模式的实现 找不到“System.Windows.Controls
var child = (from c in canvas1.Children
where "p".Equals(c.Tag)
select c).First();
canvas1.Children.Remove(child);
它给了我这个错误:
“找不到源类型的查询模式的实现
找不到“System.Windows.Controls.UIElementCollection”。“Where”。
考虑显式指定范围变量“C”的类型。
如何通过标记删除画布
子级
var child = (from FrameworkElement c in canvas1.Children
where "p".Equals(c.Tag)
select c).First();
canvas1.Children.Remove(child);
或
var child=(来自canvas1.Children.Cast()中的c)
其中“p”等于(c.Tag)
选择c.First();
画布1.儿童。移除(儿童);
UIElementCollection实现了纯旧的IEnumerable
,因此默认情况下与LINQ不兼容。在查询之前,需要将其转换为强类型的IEnumerable
var child = (from c in canvas1.Children.Cast<FrameworkElement>()
where "p".Equals(c.Tag)
select c).First();
canvas1.Children.Remove(child);
var child = (from c in canvas1.Children.Cast<FrameworkElement>()
where "p".Equals(c.Tag)
select c).First();
canvas1.Children.Remove(child);
var child = (from c in canvas1.Children.OfType<FrameworkElement>()
where "p".Equals(c.Tag)
select c).First();
canvas1.Children.Remove(child);