在一个资源字典文件下分组资源字典文件

时间:2014-11-04 22:12:10

标签: c# wpf visual-studio xaml

查看Mahapps项目,有一个资源字典(Controls.xaml)显示为" root"解决方案资源管理器中的其他资源字典。怎么能实现这一目标?

下面的图片显示了Controls.xaml项目缩进和扩展,其中包含一些合并到Contorls.xaml文件中的资源字典。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您查看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中添加此功能(我没试过) enter image description here

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

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