通用应用程序中 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>
我有一个样式 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>