WPF程序设计指南第21章中资源共享说明

此文摘自WPF程序设置指南第21章的最后,说明了多程序共享资源,摘录这里便于学习!

  当你使用资源越来越多时.你可能会想要在多个应用程序之间共享资源。特别是,如果你
开发了一个自定义style的collection,以让你公司的应用程序具有独特的外观与感觉时,尤其
如此。
    你想要在多个工程之间共享的资源,可以被集中在XAMI.文件中,其root element是
Resou}ceIlictior_arye每个资源都是root element的一个孩子。下面是一个可能的resource
dictionary,只有一个资源〔不过,想要有多个资源也行)。
<!-- ===============================================
      MyResources1.xaml (c) 2006 by Charles Petzold
     =============================================== -->
<ResourceDictionary 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <LinearGradientBrush x:Key="brushLinear">
        <LinearGradientBrush.GradientStops>
            <GradientStop Color="Pink" Offset="0" />
            <GradientStop Color="Aqua" Offset="1" />
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
</ResourceDictionary>
下面是另一个resource dictionary,可以包含许多资源,但是这里只包含一个资源:
<!-- ===============================================
      MyResources2.xaml (c) 2006 by Charles Petzold
     =============================================== -->
<ResourceDictionary 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <RadialGradientBrush x:Key="brushRadial">
        <RadialGradientBrush.GradientStops>
            <GradientStop Color="Pink" Offset="0" />
            <GradientStop Color="Aqua" Offset="1" />
        </RadialGradientBrush.GradientStops>
    </RadialGradientBrush>
</ResourceDictionary>
    你现在正在准备一个名为UseCommonResource:的工程,而且你想要使用
MyResources1.xaml和MyResources2.xaml所定义的资源。你可以让这两个文件成为
此项目的一部分,将“Build Action”设定成"Page"或"Resource"。(不过设定成Page比较
好,因为某些初步的处理会发生在编译期,将此文件从XAML转成BAML。)在此工程的“应用程序
定义文件”( application definition file〕中,你可以加上一个Resources section}语法如下面
的文件所示。
<!-- ========================================================
      UseCommonResourcesApp.xaml (c) 2006 by Charles Petzold
     ======================================================== -->
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             StartupUri="UseCommonResourcesWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="MyResources1.xaml" />
                <ResourceDictionary Source="MyResources2.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
 在文件的Resources  Section内,是一个ResourceDictionary element。
 Resource-Dictionary定义了一个名为Mergednictionaries的property,这是其他ResourceDictipnary
对象的collection,而这些对象是根据文件名来引用的。如果你只有一个resource dictionary,
你可以从一个ResourceDictionary对象直接引用它。不需要使用ResourceDictianary.
Mergednictionaries property element。
    多个resource dictionary真的会被合并(merge)如果你碰巧在多个文件中使用相同的key
那么当resource dictionary被合并时,早先出现的资源会被后来出现的相同key的资源替代。
    除了可以将Resourcenictionary放在应用程序定义文件中,也可以放在某个XAML文
件的Resources  section中,但是这么做的话,该资源只能被该文件使用,无法在整个应用程
序中使用。
    最后,下面是Window element,它使用了定义在MyResources1.xaml与MyResources2.xaml
文件内的资源。
<!-- ===========================================================
      UseCommonResourcesWindow.xaml (c) 2006 by Charles Petzold
     =========================================================== -->
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        Title="Use Common Resources"
        Background="{StaticResource brushLinear}">
    <Button FontSize="96pt"
            HorizontalAlignment="Center"
            VerticalAlignment="Center" 
            Background="{StaticResource brushRadial}">
        Button
    </Button>
</Window>
    接触像XAMI,这样的新语言,焦虑可能会伴随而来。这个语言真的定义得那么充分,让
我们不会在路上跌得鼻青脸肿吗?很重要的是,程序代码要尽量少地重复,而资源可以帮助我
们达到此目标。不只对象可以被定义一次,然后在整个应用程序中使用多次,资源也可以被存
储在它们自己的ResourceDictionary文件内,然后让多个应用程序使用相同的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值