2014-11-04 142 views
2

查看Mahapps項目,資源dictionaty(Controls.xaml)顯示爲解決方案資源管理器中其他資源字典的「根」。這怎麼能實現?在一個資源字典文件下分組資源字典文件

下面的圖像顯示Controls.xaml項目已收回並擴展了一些合併到Contorls.xaml文件中的資源字典。

enter image description here

enter image description here

回答

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。