说我有对象:
<Grid x:Key"FooGrid>
<!--Content Here-->
</Grid>
我通常会用以下内容来引用它:
<ContentPresenter Content="{StaticResource ResourceKey=FooGrid}"/>
虽然这有效,但如果我第二次调用它,它会删除第一次使用并将其移至请求的第二次使用。
显然我的调用资源的方法存在问题。如果我想要一个对象的唯一实例,类似于Style可以创建什么,那么更好的方法是什么?
我会使用样式,但据我所知,Style不支持定义的内容。
答案 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()
不起作用。