C# 删除其他类型的散点视图项

C# 删除其他类型的散点视图项,c#,wpf,C#,Wpf,我动态添加了一个ScatterViewItem,注意我并不是专门创建一个ScatterViewItem,因为当按照文档添加时,它们应该包装在一个中: VideosProducts videosProducts = VideosProducts.GetVideoProductsControl(); videosProducts.Name = "VideosProducts"; main.Items.Add(videosProducts); ScatterViewItem item = main.I

我动态添加了一个ScatterViewItem,注意我并不是专门创建一个ScatterViewItem,因为当按照文档添加时,它们应该包装在一个中:

VideosProducts videosProducts = VideosProducts.GetVideoProductsControl();
videosProducts.Name = "VideosProducts";
main.Items.Add(videosProducts);
ScatterViewItem item = main.ItemContainerGenerator.ContainerFromItem(videosProducts) as ScatterViewItem;
item.ApplyTemplate();
item.Background = new SolidColorBrush(Colors.Transparent);
item.ShowsActivationEffects = false;
item.Center = new Point(430, 820);
SurfaceShadowChrome ssc = item.Template.FindName("shadow", item) as SurfaceShadowChrome;
ssc.Visibility = Visibility.Hidden;
但现在,当我尝试按如下方式删除它们时:

Window window = Application.Current.Windows.Cast<Window>().SingleOrDefault(x => x.IsActive);
ScatterView main = UIHelper.FindChild<ScatterView>(window, "MainScatterView");
List<ScatterViewItem> svItems = main.Items.Cast<ScatterViewItem>().Where(svi => svi.Name != "MenuControl").ToList();
windowwindow=Application.Current.Windows.Cast().SingleOrDefault(x=>x.IsActive);
ScatterView main=UIHelper.FindChild(窗口,“MainScatterView”);
List svItems=main.Items.Cast().Where(svi=>svi.Name!=“MenuControl”).ToList();

我得到一个无效的强制转换异常。有什么好处?我认为这些项目是作为散点视图项目添加的?

使用与上述代码相同的
ItemContainerGenerator.ContainerFromItem
机制,用于第二个代码中的每个项目。

:(其中一些被添加为scatterViewItems,这就是为什么我建议不要在WPF中使用代码来操作UI元素,而是使用
ItemsSource
和MVVM。GetType仍然将其作为ScatterViewItem提供给我,但我不能将其作为scatterViewItems进行转换。转换告诉我这是一个视频产品。这是因为
cast
。通过
更改它f改为键入