【问题标题】:Group resource dictionary files under one resource dictionary file将资源字典文件分组到一个资源字典文件下
【发布时间】:2014-11-04 22:12:10
【问题描述】:

查看 Mahapps 项目,有一个资源字典 (Controls.xaml),在解决方案资源管理器中显示为其他资源字典的“根”。如何实现?

下图显示了 Controls.xaml 项目的收回和扩展,其中一些资源字典已合并到 Contorls.xaml 文件中。

【问题讨论】:

    标签: c# wpf visual-studio xaml


    【解决方案1】:

    如果您查看 MahApps.Metro.NET45.csproj 项目文件,您会发现:

    <Page Include="Styles\Controls.AnimatedSingleRowTabControl.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
      <DependentUpon>Controls.xaml</DependentUpon>
    </Page>
    

    对于其他嵌套的 xaml 资源也是如此。

    如果您查看 Controls.xaml,您会看到他们使用 ResourceDictionary.MergedDictionaries 将一些嵌套的 xaml 资源合并到 Controls.xaml 中,如下所示:

    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Sizes.xaml" />
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.Page.xaml" />        
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/ValidationErrorTemplate.xaml" />
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.Scrollbars.xaml" />
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.ListView.xaml" />
    

    等等……

    我不确定他们为什么不将所有嵌套的 xaml 控件合并到 Controls.xaml 中。

    我认为没有办法在 Visual Studio IDE 中添加 DependentUpon xml 节点,我手动添加并得到以下结果。有 addins 声称在 IDE 中添加此功能(我没有尝试过)。

    请注意,MSDN 将 DependentUpon 节点描述为:可选字符串。 指定此文件正确编译所依赖的文件。我不确定这是否会对编译过程产生重大影响。

    总之,如果您想在 IDE 中直观地表示哪些文件相互依赖,请在 csproj 文件中添加 DependentUpon Xml 节点。如果您还想合并资源字典,请在 xaml 中使用 ResourceDictionary.MergedDictionaries。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      相关资源
      最近更新 更多