假设我有一个对象:
<Grid x:Key"FooGrid>
<!--Content Here-->
</Grid>我通常是这样引用它的:
<ContentPresenter Content="{StaticResource ResourceKey=FooGrid}"/>虽然这种方法有效,但如果我第二次调用它,它会删除第一次使用,并将其移动到所请求的第二次使用。
显然,我调用资源的方法有一个问题。如果我想要一个对象的唯一实例,更好的方法是什么,类似于什么样式可以创建?
我会使用style,但据我所知,Style不支持定义的内容。
发布于 2012-07-27 06:31:41
您可以使用x:Shared属性来执行此操作,例如:
<Grid x:Key"FooGrid" x:Shared="False">
<!--Content Here-->
</Grid> 发布于 2012-07-27 07:10:58
对不起-如果我的英语不好..
这是因为该元素是其他元素的逻辑子元素。但是ContentPresenter不是ContentControl,那么他就这样做。
如果你用ContentControl做同样的事情,你会得到一个运行时错误。
请参阅:http://msdn.microsoft.com/en-us/library/system.windows.controls.contentpresenter.content
阿特,艾伦
发布于 2017-10-24 16:36:54
我使用了“一只小羊”的答案来添加x:Shared="False",但它破坏了VisualBrush的结构,所以我添加了VisualBrush vb = Application.Current.Resources["MyBrushName"] as VisualBrush; VisualBrush newVB = vb.Clone();代码,它证明了我的努力是正确的。只使用.Clone()是行不通的。
https://stackoverflow.com/questions/11676866
复制相似问题