删除其他类型的ScatterViewItems

时间:2012-11-20 13:18:30

标签: c# wpf

我动态添加了一个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();

我收到了无效的强制转换异常。是什么赋予了?我以为这些项目是作为ScatterViewItems添加的?

1 个答案:

答案 0 :(得分:1)

对于第二个代码中的每个项目,

使用与上述代码相同的ItemContainerGenerator.ContainerFromItem机制。