代码之家  ›  专栏  ›  技术社区  ›  Gordon Mackie JoanMiro

在Silverlight 3的generic.xaml中使用合并词典

  •  9
  • Gordon Mackie JoanMiro  · 技术社区  · 17 年前

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

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="MyFirstControl.xaml" />
            <ResourceDictionary Source="MySecondControl.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    

    随着Silverlight 3 beta版的推出,引入了合并字典支持,Silverlight用户控件似乎也可以这样做。但是,尽管在generic.xaml中尝试了合并字典文件上的所有构建操作组合以及源引用的相应语法,但我似乎无法让它正常工作。

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


    好的-在无数测试项目之后,在WPF中获得工作样本,并将XAML和C#代码移到Silverlight 3上,但仍然失败,我完成了所有Silverlight 2位和所有Silverlight 3 beta位的完全卸载和重新安装,最后一切正常。

    感谢Jared查看情况并与SL3团队核实……感谢 Amy Dullard 和 Shawn Wildermuth 用于生成运行Silverlight 2&的说明和批处理文件;3在同一台机器上。

    3 回复  |  直到 14 年前
        1
  •  12
  •   Jared Bienz - MSFT    17 年前

    我刚刚在一个用户控件中尝试了以下操作,效果很好:

    <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>
    

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

    <ResourceDictionary Source='/SilverlightClassLibrary1;component/CustomControl.xaml'/>
    

    这有用吗?

        2
  •  1
  •   ShawnFeatherly    15 年前

    如果 MySecondControl.xaml MyFirstControl.xaml 将它们添加到generic.xaml的ResourceDictionary的顺序无关紧要。您需要冗余地包括 在里面 MySecondControl.xaml MySecondControl.xaml 应包括:

    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source='/MyControls;component/Themes/MyFirstControl.xaml'/>
    </ResourceDictionary.MergedDictionaries>
    <!-- ... Contents of MySecondControl.xaml -->
    
        3
  •  0
  •   Rana Ian    14 年前

    我刚刚解决了这个问题。ResourceDictionary确实支持合并字典,但对于使用Generic.xaml的自定义模板控件,Generic.xaml不支持合并字典。因此有两种选择:(1)要么将所有模板堆积到Generic.xaml中;或者(2)创建YourOwnDictionary.xaml,将所有单独的词典合并到YourOwnDictionary.xaml中,并从用户控件和页面引用YourOwnDictionary.xaml。这似乎是早期Silverlight版本不支持合并词典的一个特性/错误。

    推荐文章