WP8开发日志(4):ResourceDictionary的外联-创新互联

也许,这是个简单的问题,可惜WP8的开发资料真的是少得可怜,还是折腾了半天,MSDN上面说得挺清楚,不过似乎是WPF的内容,可以参考这里:http://msdn.microsoft.com/zh-cn/library/cc903952(v=vs.95).aspx ,我在这里做一下简单的备忘。

成都创新互联公司IDC提供业务:遂宁服务器托管,成都服务器租用,遂宁服务器托管,重庆服务器租用等四川省内主机托管与主机租用业务;数据中心含:双线机房,BGP机房,电信机房,移动机房,联通机房。

一般我们在PhonePage里定义样式,是直接在PhoneApplicationPage.Resources的条目下写的,很明了的,本页面定义的资源只能在本页面里使用,根据CSS的思想,这里肯定会有办法让我们自己去定义一堆自己的控件或内容样式,应用里的每一个页面都可以去调用得到它。像下面的代码,是WP8工程每个默认页面都带有的调用系统样式的例子:

FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"

通过查看PhoneFontFamilyNormal定义,我们可以定位到一个叫DarkRed.xaml的文件,没错,这就是我们想要的效果,定义一个统一的样式文件,然后在应用的随便一个地方都可以调用得了,这个标准称呼就叫“资源字典的外联或合并”。

DarkRed.xaml本身就是一个很好的参考样本,在此为基础我们建立自己的样式资源文件,起码此文件上的引用信息是必须要用的,根据我上篇日志系列的例子工程,我打算将LongListSelector里的数据模板样式放到独立的资源文件里去,自建一个xaml的文件,Ctrl+C,Ctrl+V,像下面这个样子:

//MySource/MyDataTemplate.xaml

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:System="clr-namespace:System;assembly=mscorlib">
                                                                                                                                           
    <DataTemplate x:Key="TestDataItemTemplate">
        <StackPanel Margin="0,0,0,0">
            <TextBlock Text="{Binding Index}"/>
            <TextBlock Text="{Binding Name}" />
            <StackPanel Height="1" Background="AliceBlue"></StackPanel>
        </StackPanel>
    </DataTemplate>
    <DataTemplate x:Key="TestDataItemTemplate2">
        <StackPanel Margin="0,0,0,0">
            <TextBlock Foreground="Red" Text="{Binding Index}"/>
            <TextBlock Foreground="Yellow" Text="{Binding Name}" />
            <TextBlock Foreground="Green" Text="{Binding Flag}" />
            <StackPanel Height="1" Background="RoyalBlue"></StackPanel>
        </StackPanel>
    </DataTemplate>
</ResourceDictionary>

至于如何引用呢?资源字典是页面资源的一部分,所以还是要下PhoneApplicationPage.Resources下面作引用的操作,像下面这个样子:

//MainPage.xaml

<!--引用外部的资源字典文件-->
<phone:PhoneApplicationPage.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="MySource/MyDataTemplate.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</phone:PhoneApplicationPage.Resources>

当然可以外联很多个资源文件,看你自己安排,其他的代码,一点也不须要动。最后,留个问题:如果将上面Resources里的内容放到App.xaml里的Application.Resources下面,那是否工程下面所有的页面都不需要作引用操作就可以获取到相关资源呢?我还木有试过呢。

附件:http://down.51cto.com/data/2364299

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

文章名称:WP8开发日志(4):ResourceDictionary的外联-创新互联
文章源于:https://www.cdcxhl.com/article46/dpiohg.html

成都网站建设公司_创新互联,为您提供品牌网站建设品牌网站制作网站策划网站设计公司虚拟主机全网营销推广

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化