克隆ResourceDictionary对象

时间:2012-07-26 19:44:53

标签: wpf xaml styles

说我有对象:

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

我通常会用以下内容来引用它:

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

虽然这有效,但如果我第二次调用它,它会删除第一次使用并将其移至请求的第二次使用。

显然我的调用资源的方法存在问题。如果我想要一个对象的唯一实例,类似于Style可以创建什么,那么更好的方法是什么?

我会使用样式,但据我所知,Style不支持定义的内容。

3 个答案:

答案 0 :(得分:5)

您可以使用x:Shared属性执行此操作,例如:

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

答案 1 :(得分:1)

对不起,如果我的英语不好......

这种情况发生了,因为该元素是其他元素的逻辑子元素。 但是ContentPresenter不是ContentControl,那么他就是这样做的。

如果您使用ContentControl尝试相同的操作,则会出现运行时错误。

请参阅: http://msdn.microsoft.com/en-us/library/system.windows.controls.contentpresenter.content

ATT, 艾伦

答案 2 :(得分:0)

我用“小羊”的答案补充说 x:Shared="False" 但它破坏了VisualBrush的结构,所以我添加到代码中 VisualBrush vb = Application.Current.Resources["MyBrushName"] as VisualBrush; VisualBrush newVB = vb.Clone(); 这证明了我的努力是正确的。 仅使用.Clone()不起作用。