通用应用程序中 x:Shared 的解决方法

Workaround for x:Shared in Universal Applications

我有一个样式 setter 将值设置为资源。

它适用于单个元素,但当样式应用于多个元素时,会抛出异常。这是我的:

<SymbolIcon x:Key="Star" Symbol="Star" />


<Style TargetType="ContentControl">
    <Setter Property="Content" Value="{StaticResource Star}"/> 
</Style>

我知道只会创建一个实例。由于我无法创建 "multi-instance" 资源,我该如何让它发挥作用?

如果你想制作一对元素,而不仅仅是一个实例,那么你可以使用模板。一个简单的例子:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.Resources>
        <DataTemplate x:Key="Star">
                <SymbolIcon Symbol="Favorite"/>
        </DataTemplate>
        <Style TargetType="ContentControl">
            <Setter Property="ContentTemplate" Value="{StaticResource Star}"/>
        </Style>
    </Grid.Resources>
    <StackPanel Orientation="Horizontal">
        <ContentControl/>
        <ContentControl/>
        <ContentControl/>
        <ContentControl/>
    </StackPanel>
</Grid>