也许有人会帮助我。我一直在试图找到一种解决方案,以在我的WindowsPhone项目上共享样式和资源。跨程序集的合并词典和共享样式
存在的问题如下:
我有其中使用由两个WP项目共同的组件。在这个程序集里面我定义了一些样式和数据模板。我希望在普通程序集中定义其中一个数据模板,并将其作为项目的默认数据模板。
大会资源字典的示例代码:
<Style TargetType="TextBlock" x:Key="TopItemsTitle">
<Setter Property="FontSize" Value="18"></Setter>
<Setter Property="FontFamily" Value="Segoe WP Black"></Setter>
<Setter Property="Foreground" Value="Red"></Setter>
</Style>
<DataTemplate x:Key="TopItemsTemplate">
<Button>
<TextBlock x:Name="Name"
Grid.Row="1"
Width="172"
Height="25"
Margin="0,6,0,50"
VerticalAlignment="Bottom"
Text="{Binding Name}"
TextWrapping="Wrap"
Style="{StaticResource TopItemsTitle}" />
</Button>
</DataTemplate>
内不同项目,我想重新定义TopItemsTitle风格,例如:
<Style TargetType="TextBlock" x:Key="TopItemsTitle">
<Setter Property="FontSize" Value="20"></Setter>
<Setter Property="FontFamily" Value="Segoe WP"></Setter>
<Setter Property="Foreground" Value="Blue"></Setter>
</Style>
然后合并在应用这两个资源字典。一个WP项目的xaml:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Assembly;component/Resources/Style.xaml" />
<ResourceDictionary Source="Resources/LocalStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
根据到MSDN这应该是可以的。但实际上这是行不通的。数据模板不反映重新定义的样式并使用默认样式。
这是一个错误还是我简单做错了?
任何形式的帮助将不胜感激。
谢谢@RobSiklos,您正确地将TopItemsTitle风格移到不同的字典中来解决问题。 其实我发现了别的东西,你不需要在通用的style.xaml字典上定义样式,你可以在它们各自的LocalStyle.xaml字典上为每个应用程序在本地定义它。 – Mike 2013-03-27 14:46:22