引用相同StaticResource的ContentControl仅渲染资源一次

时间:2014-08-13 00:04:07

标签: wpf

我在ResourceDictionary中有一个资源:

<Viewbox x:Key="Icons.Profile">
    <Canvas Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
        <Path Width="40.7907" Height="33.55" Canvas.Left="16.2093" Canvas.Top="22.2" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M ... "/>
    </Canvas>
</Viewbox>

如果我添加两个引用StaticResource的Buttons / Content Controls,那么最后呈现的那个似乎会呈现&#34; Icon&#34;

<Button Content="{StaticResource Icons.Profile}" />

有谁知道为什么以及如何解决这个问题?在Visual Studio和Blend中,正在为所有控件呈现内容。

1 个答案:

答案 0 :(得分:9)

这是因为一个元素只能有一个逻辑父元素,但是你可以将资源设置为x:Shared="false",这将为每次使用创建/渲染一个新元素。

示例:

<Viewbox x:Key="Icons.Profile" x:Shared="false">
    <Canvas Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
        <Path Width="40.7907" Height="33.55" Canvas.Left="16.2093" Canvas.Top="22.2" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M ... "/>
    </Canvas> 
</Viewbox>