在不同的地方共享相同的矢量控制

时间:2010-05-28 11:01:49

标签: silverlight bitmap vector

我正在尝试实现以下内容:我有一个项目管理器,里面有一个Item类。 Item类可以存储两种可能的可视表示形式 - BitmapImage(位图)和UserControl(vector)。

然后,在游戏中,我需要在它发生的所有可能位置之间共享相同的图像或矢量控件。例如,考虑地图上的10棵树,并且都指向相同的矢量控件。或者在某些情况下,这可能是位图图像源。

因此,问题是可以通过多个UIElements在应用程序中轻松共享BitmapImage源。但是,当我尝试共享矢量控件时,它会失败,并说Child Element已经是另一个控件的Child元素。我想知道如何以最好的方式组织这个。例如,将UserControl替换为其他类型的控件或存储,但是我需要确保它支持里面的Storyboard动画。

代码如下所示:

    if (bi.item.BitmapSource != null)
    {
        Image previewImage = new Image();
        previewImage.Source = bi.item.BitmapSource;
        itemPane.ItemPreviewCanvas.Children.Add(previewImage);
    } else
    if (bi.item.VectorSource != null)
    {
        UserControl previewControl = bi.item.VectorSource;
        itemPane.ItemPreviewCanvas.Children.Add(previewControl);
    }

或者不可能在不同的地方共享相同的控件,那么制作副本的最佳方式是什么,或者是存储矢量数据的最佳方式。

提前致谢

1 个答案:

答案 0 :(得分:1)

所以,我发现了问题。可以将相同的UserControl附加到不同的控件。

然而,在更新时我正在删除控件,然后再用新指针填充它,有时与删除前相同,不知何故它仍然在内存中。因此它就像是同一个用户控件连接到同一个父级。

我添加了一行代码,用于清理控制中的所有子代,然后使用新的矢量UserControl进行更新,现在就像魅力一样。