【问题标题】:Clone ResourceDictionary Object克隆 ResourceDictionary 对象
【发布时间】:2012-07-26 19:44:52
【问题描述】:

说我有对象:

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

我通常通过以下方式引用它:

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

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

显然我调用资源的方法存在问题。如果我想要一个独特的对象实例,类似于 Style 可以创建的对象,有什么更好的方法来解决这个问题?

我会使用样式,但据我了解,样式不支持已定义的内容。

【问题讨论】:

    标签: wpf xaml styles


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果我的英语不好,请见谅..

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

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

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

      Att, 艾伦

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2011-11-07
          • 2013-01-03
          • 2017-02-11
          • 2011-07-10
          • 1970-01-01
          • 1970-01-01
          • 2013-09-06
          • 2013-04-06
          • 2016-08-05
          相关资源
          最近更新 更多