2012-07-26 172 views
2

說我有對象:克隆的ResourceDictionary對象

<Grid x:Key"FooGrid> 
    <!--Content Here--> 
</Grid> 

我通常用類似引用它:

<ContentPresenter Content="{StaticResource ResourceKey=FooGrid}"/> 

雖然這個作品,如果我把它稱爲第二次,它刪除第一次使用並將其移至要求的第二次使用。

很明顯,我的方法調用資源的問題。如果我想要一個獨特的對象實例,類似於可以創建的對象,那麼更好的方法是什麼?

我會使用風格,但據我所知,風格不支持定義的內容。

回答

4

可以使用x:Shared屬性要做到這一點,例如:

<Grid x:Key"FooGrid" x:Shared="False"> 
    <!--Content Here--> 
</Grid> 
+0

謝謝,這完美的訣竅。 – Canin 2012-07-27 15:26:15

0

對不起,我,如果我的英語不好..

出現這種情況,因爲該元素是其他元素的邏輯子。 但ContentPresenter不是ContentControl,那麼他會這樣做。

如果您使用ContentControl嘗試相同的操作,則會出現運行時錯誤。

參見: http://msdn.microsoft.com/en-us/library/system.windows.controls.contentpresenter.content

ATT, 艾倫

我用 「小肥羊」 答案補充 x:Shared="False" 但它毀了VisualBrush的結構,所以我加入到代碼 VisualBrush vb = Application.Current.Resources["MyBrushName"] as VisualBrush; VisualBrush newVB = vb.Clone();
0

證明我的努力是正確的。 僅使用.Clone()不起作用。