我有多个silverlight项目,我想使用相同的样式,配色方案和一些模板化对象。
我如何做到这一点?
答案 0 :(得分:11)
这样做的一种方法是创建一个新的silverlight类库,它将是您的共享主题/样式程序集,将由其他silverlight项目引用。这个程序集中有一个或多个Resource Dictionary XAML文件,可以定义所有样式,画笔和模板。您甚至可以使用Style类的BasedOn属性设置一些级联样式层次结构。
然后,您可以使用MergedDictionaries将这些样式合并到App.xaml级别或页面级别的应用程序中。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/SharedThemeAssembly;component/MyStyles.xaml"/>
...other ResourceDictionaries to merge in...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
然后,您将像通常的其他StaticResource一样引用共享样式/画笔。
答案 1 :(得分:4)
有两个选项,首先是Dan表示您可以创建一个由其他项目共享的库。如果客户端访问您的多个项目,并且您的项目使用应用程序库缓存,那么您将减少总下载大小。
另一种方法是在一个项目中创建资源字典,然后将同一文件添加到其他项目中。请注意,在“添加现有项”对话框中,“添加”按钮具有一个小的下拉图像,将其放下,然后选择“添加为链接”。
这使得dicitionary成为一个简单的Xaml文件。我能看到的一个优点是实际上将字典文件保留在Xap之外,只需将其放在clientBin文件夹中(或放置Xap的文件夹)。这种方法允许所有Xaps共享单个字典(与第一种方法相同),但允许调整Xaml而不会进行混乱的重建。