2010-02-15 70 views

回答

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一样引用共享样式/画笔。

+0

希望我能投票这两次:)。 – retrodrone 2011-12-14 02:27:02

4

有两个选项,首先是Dan表示您可以创建一个由其他项目共享的库。如果客户端访问多个项目,并且您的项目使用应用程序库缓存,那么您可以减少总下载大小。

另一种方法是在一个项目中创建一个资源字典,然后将相同的文件添加到其他项目。在添加现有项目对话框中注意,添加按钮有一个小的下拉图片,放下它,然后选择“添加为链接”。

这留下了一个简单的Xaml文件的dicitionary。我能看到的一个优点是实际上将字典文件从Xap中移出,并将其放在clientBin文件夹(或Xap所在的文件夹)中。这种方法允许所有Xaps共享单个字典(与第一种方法相同),但允许对Xaml进行调整而不会造成混乱的重建。

+0

http://stackoverflow.com/questions/9215906/cant-find-my-styles-in-silverlight-5/9216046#9216046。你能帮我解决吗? – Vinicius 2012-02-09 19:59:01