2010-05-28 51 views
2

我想實現以下內容:我有一個項目管理器,裏面有一個Item類。 Item類可以存儲兩個可能的視覺表示 - BitmapImage(位圖)和UserControl(矢量)。在不同的地方共享相同的矢量控件

然後,在遊戲中,我需要在所有可能發生的位置之間共享相同的圖像或矢量控件。例如,考慮地圖上的10棵樹,並且都指向相同的矢量控件。或者在某些情況下,這可以是位圖圖像源。

所以,問題是BitmapImage源可以在應用程序中由多個UIElements輕鬆共享。但是,當我嘗試共享矢量控件時,它失敗,並且說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

所以,我發現這個問題。可以將相同的用戶控件附加到不同的控件。

但是,當更新時,我正在刪除控件,然後用一個新的指針再次填充它,有時候和刪除之前一樣,它仍然在內存中。所以它就像2個相同的用戶控件附加到同一個父級。

我添加了一行代碼,它在清理所有控制的孩子之前,使用新的矢量UserControl進行更新,現在就像一個魅力一樣。