Silverlight:共享相同样式文件的多个项目

时间:2010-02-15 20:19:17

标签: silverlight

我有多个silverlight项目,我想使用相同的样式,配色方案和一些模板化对象。

我如何做到这一点?

2 个答案:

答案 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而不会进行混乱的重建。