Silverlight 4 – 在另一个ResourceDictionary中使用StaticResource

前端之家收集整理的这篇文章主要介绍了Silverlight 4 – 在另一个ResourceDictionary中使用StaticResource前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有这些词典:

dict1.xaml:
<颜色x:键=“颜色1”>红色< /颜色>

dict2.xaml:
< SolidColorBrush x:Key =“Brush1”Color = {StaticResource Color1} />

这有效:

App.xaml中:

<MergedDictionaries>
  <ResourceDictionary Source="dict1.xaml"/>
<MergedDictionaries>

SomePage.xaml:

<UserControl.Resources>
  <MergedDictionaries>
    <ResourceDictionary Source="dict2.xaml"/>
  </MergedDictionaries>
</UserControl.Resources>

这不是:

App.xaml在应用程序级别合并.

我收到一个关于找不到Color1的错误.

为什么是这样 ? /它有办法解决吗?我知道这个例子很简单,但真正的例子太长了.基本上我只是想在不同的文件中组织我的样式和模板:

>一个颜色
>一个用于隐式样式
>许多用于显式样式

编辑:奇怪的是,如果我在Application_Startup上的代码中执行此操作,在设置RootVisual属性之前,我没有收到错误…我只是为什么感到困惑!

解决方法

不幸的是,你在Silverlight资源系统中遇到了一个烦人的限制,我只能想象这是一些优化问题.这里似乎有一些异步行为,其中MergedDictionaries中的每个字典都是并行加载的,因此当加载“dict2.xaml”时,你不能依赖于存在的“dict1.xaml”内容.

最简单的解决方案是在Dict2中包含Dict1的合并: –

App.xaml中:

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="dict2.xaml" />
<ResourceDictionary.MergedDictionaries>

Dict2.xaml:

<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="dict1.xaml" />
    </ResourceDictionary.MergedDictionaries>
    .... <!-- dict2 resource -->
</ResourceDictionary>

猜你在找的Silverlight相关文章