• 【UWP】在不同类库使用ResourceDictionaries


      通常我们在类库中定义资源的时候可以在Theme/Generic.xaml中定义,当类库加载的时候,会自动加载Generic.xaml文件中的资源,通常用在控件库中,但如果控件多了之后,所有的Style都定义在Generic.xaml中会是的文件很大很臃肿,这时候我们可以通过Uri的方式引用外部的资源,把资源定义在多个文件中,可以更方便于管理,在程序集中定义引用外部ResourceDictionary比较特殊,方法如下

    WinRT:  

      ms-appx:///{ASSEMBLY_NAME}/{RESOURCE_FILE_PATH}
        如:ms-appx:///Contoso.Core/Resources/CoreStyles.xaml

    Sliverlight

      /{ASSEMBLY_NAME};component/{RESOURCE_FILE_PATH}
        如:/Contoso.Core;component/Resources/CoreStyles.xaml

    下面为完整Demo

    1、WinRT

    <Application
     x:Class="Contoso.UI.App"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
        <!--Application Resources-->
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="ms-appx:///Contoso.Core/Resources/CoreStyles.xaml" />
                    <ResourceDictionary Source="ms-appx:///Contoso.UI.Core/Resources/UICoreStyles.xaml" />
                </ResourceDictionary.MergedDictionaries>
    
                <!-- Other style definitions can still go here -->
                <Style TargetType="Button">
                </Style>
    
            </ResourceDictionary>
        </Application.Resources>
    </Application>

    2、Silverlight

    <Application
     x:Class="Contoso.UI.App"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
     xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
    
        <!--Application Resources-->
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="/Contoso.Core;component/Resources/CoreStyles.xaml"/>
                    <ResourceDictionary Source="/Contoso.UI.Core;component/Resources/UICoreStyles.xaml"/>
                </ResourceDictionary.MergedDictionaries>
    
                <!-- Other style definitions can still go here -->
                <Style TargetType="Button">
                </Style>
    
            </ResourceDictionary>
        </Application.Resources>
    
        <Application.ApplicationLifetimeObjects>
            <!--Required object that handles lifetime events for the application-->
            <shell:PhoneApplicationService
     Launching="Application_Launching" Closing="Application_Closing"
     Activated="Application_Activated" Deactivated="Application_Deactivated"/>
        </Application.ApplicationLifetimeObjects>
    
    </Application>

    参考链接:

      http://blogs.msdn.com/b/madenwal/archive/2015/02/09/how-to-link-style-resource-dictionaries-located-in-different-assemblies-in-winrt.aspx

  • 相关阅读:
    HTTP 错误 500.21
    《21天学通C#》给多个变量赋值
    《21天学通C#》变量使用前需要声明和赋值,赋值后可以重新赋新的值
    《21天学通C#》课后习题:编写代码将你的名字打印到控制台
    《21天学通C#》数字前面补0
    《21天学通C#》将写的代码原封不动的在控制台显示
    《21天学通C#》Write和WriteLine的区别
    《21天学通C#生成XML文件
    《21天学通C#》嵌套循环,输出上三角形X。
    Scala之隐式转换implicit详解
  • 原文地址:https://www.cnblogs.com/bomo/p/5158743.html
Copyright © 2020-2023  润新知