Kir*_*Kir 7 silverlight resourcedictionary staticresource
如果我有这些词典:
dict1.xaml:
<Color x:Key="Color1">Red</Color>
dict2.xaml:
<SolidColorBrush x:Key="Brush1" Color={StaticResource Color1} />
这有效:
App.xaml中:
<MergedDictionaries>
<ResourceDictionary Source="dict1.xaml"/>
<MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)
SomePage.xaml:
<UserControl.Resources>
<MergedDictionaries>
<ResourceDictionary Source="dict2.xaml"/>
</MergedDictionaries>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)
这不是:
App.xaml在应用程序级别合并.
我收到有关未找到Color1的错误.
为什么是这样 ?/它有办法解决吗?我知道这个例子很简单,但真正的例子太长了.基本上我只是想在不同的文件中组织我的样式和模板:
编辑:奇怪的是,如果我在代码中执行此操作Application_Startup,在设置RootVisual属性之前,我没有收到错误...我只是为什么感到困惑!
不幸的是,你在Silverlight资源系统中遇到了一个烦人的限制,我只能想象这是一些优化问题.这里似乎有一些异步行为,其中每个字典MergedDictionaries都是并行加载的,因此当加载"dict2.xaml"时,你不能依赖于"dict1.xaml"的内容.
最简单的解决方案是在Dict2中包含Dict1的合并: -
App.xaml中:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="dict2.xaml" />
<ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)
Dict2.xaml:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="dict1.xaml" />
</ResourceDictionary.MergedDictionaries>
.... <!-- dict2 resource -->
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8022 次 |
| 最近记录: |