在Silverlight 3中的generic.xaml中使用MergedDictionaries

Gor*_*iro 9 silverlight silverlight-3.0 mergeddictionaries generic.xaml

在WPF中,通过将标记保存在themes文件夹中的单独XAML文件中,然后使用MergedDictionaries将它们导入generic.xaml,可以为多个用户控件组织XAML:

<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="MyFirstControl.xaml" />
        <ResourceDictionary Source="MySecondControl.xaml" />
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

随着Silverlight 3 beta的推出引入了合并字典支持,似乎可以对Silverlight用户控件做同样的事情.但是尽管在merge.xaml中尝试了合并字典文件的构建操作的所有组合以及源引用的相应语法,但我似乎无法使其工作.

还有其他人试过吗?有谁知道这是否可能,如果是,我做错了什么?


好的 - 所以在经过大量的测试项目之后,在WPF中获取工作样本并将XAML和C#代码移到Silverlight 3并且它仍然失败,我完全卸载并重新安装所有Silverlight 2位和所有Silverlight 3 beta位和终于让事情奏效了.

我只能假设我以某种方式最终安装了错误的测试版 - 我不知道但是看起来我仍然在Silverlight 2运行时运行,尽管显然安装了版本3运行时.

感谢Jared看看事情并检查SL3团队......感谢Amy DullardShawn Wildermuth在同一台机器上生成运行Silverlight 2和3的指令和批处理文件.

Jar*_*SFT 12

我刚刚在用户控件中尝试了以下操作并且它有效:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="ResourcesA.xaml" />
            <ResourceDictionary Source="ResourcesB.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>
<StackPanel>
    <Rectangle Width="100" Height="100" Fill="{StaticResource ResAColor}" />
    <Rectangle Width="100" Height="100" Fill="{StaticResource ResBColor}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

但是你特别提到generic.xaml.你有什么问题?

- 编辑

根据其他评论,我与SL3团队进行了交谈,得到了以下答案:

使用generic.xaml作为资源编译并使用完整资源语法,对我有用.有一个错误,无法在generic.xaml(31783)中使用Source的相对URI,但非相对表单应该可以正常工作

<ResourceDictionary Source='/SilverlightClassLibrary1;component/CustomControl.xaml'/>
Run Code Online (Sandbox Code Playgroud)

在generic.xaml中,将generic.xaml和CustomControl.xaml的构建操作修改为Resource.让我知道如果还有麻烦 - 如果你得到一个复制品,我可以看看它.

这有帮助吗?