好的,这让我疯狂了。我有一个Silverlight 5项目。不久前我们决定以我们的项目为主题,只是为了让它更流行。我找到了主题实现并继续进行。
首先,我使用了Silverlight Toolkit中的.Theming命名空间。我使用了显式构建的theme.dll。虽然有一个缺点,我没有能力自定义主题。所以我决定只使用theme.xaml,并使用<MergedDictionaries>
实现它。
这种方法的问题在于,我失去了在设计时看到主题的能力。在运行时它工作正常。但是,当我不想定制主题时,这还不够好。
我通过在App.Xaml中使用合并的词典来实现主题,如此
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/eCP;component/Themes/WhistlerBlue.xaml"/>
</ResourceDictionary.MergedDictionaries>
<vm:ViewModelLocator x:Key="ViewModelLocator"/>
</ResourceDictionary>
</Application.Resources>
如果我将相同的blok放在我的MainPage中,主题会立即在设计时间内打开。但是不必在每个Silverlight页面上都这样做吗?
简而言之:如果我在App.xaml中使用MergedDictionaries实现主题,它在设计时不起作用。如果我在特定页面上执行此操作,它确实有效。
有趣的是,如果我在Expression Blend中打开我的项目,它在设计时可以正常工作。
我的第一个想法是,有些东西搞砸了我的visual studio 2010 SP1。也许在隐藏的项目文件中有什么东西,但我不知道。
任何人都可以提供帮助吗?