克隆ResourceDictionary对象

3

假设我有一个对象:

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

我通常会用类似这样的方式引用它:

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

虽然这样可以实现功能,但如果我第二次调用它,它会移除第一次使用并将其移至请求的第二次使用位置。

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

我可以使用Style,但据我了解,Style不支持定义的内容。

3个回答

6
您可以使用 x:Shared 属性来实现此功能,例如:
<Grid x:Key"FooGrid" x:Shared="False"> 
   <!--Content Here--> 
</Grid> 

1

0
我使用了“小羊”答案来添加 x:Shared="False" 但它破坏了VisualBrush的结构,所以我在代码中添加了以下内容: VisualBrush vb = Application.Current.Resources["MyBrushName"] as VisualBrush; VisualBrush newVB = vb.Clone(); 这样做证明了我的努力是值得的。 仅使用.Clone()是不起作用的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接