• 【WP8】ResourceDictionary


    WP8中引用资源字典

      当我们定义的样式太多的时候,我们可以把样式分别定义在不同的文件中,然后通过 MergedDictionaries 应用到其他资源字典中,看下面Demo

     

      我们可以把样式定义在多个文件中,然后再App.xaml中引用

    我们先定义三个文件

      1、蓝色按钮资源文件,定义按钮的Foreground为Blue

    <ResourceDictionary
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
        <Style TargetType="Button">
            <Setter Property="Foreground" Value="Blue"></Setter>
        </Style>
        
    </ResourceDictionary>
    BlueButtonResource.xaml

      2、红色按钮资源文件,定义按钮的Foreground为Red

    <ResourceDictionary
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
        <Style TargetType="Button">
            <Setter Property="Foreground" Value="Red"></Setter>
        </Style>
        
    </ResourceDictionary>
    RedButtonResource.xaml

      3、全局资源文件(在App.xaml引用),这里只定义TextBlock为Teal

    <ResourceDictionary
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
        <Style TargetType="TextBlock">
            <Setter Property="Foreground" Value="Teal"></Setter>
        </Style>
    
    </ResourceDictionary>
    GlobalResourceDictionary.xaml

    然后再App.xaml全局引用全局资源文件

        <!--应用程序资源-->
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <!--这里引用其他文件,当然,也可以设置多个ResourceDictionary-->
                    <ResourceDictionary Source="GlobalResourceDictionary.xaml"/>
                </ResourceDictionary.MergedDictionaries>
                
                <!--这里定义其他样式-->
                <Style TargetType="TextBlock">
                    <Setter Property="Foreground" Value="Teal"></Setter>
                </Style>
                
                <Style TargetType="Rectangle">
                    <Setter Property="Fill" Value="{StaticResource PhoneAccentBrush}"></Setter>
                </Style>
            </ResourceDictionary>
        </Application.Resources>

     前面蓝色和红色按钮的两个资源文件,可以用来当成不同的主题,我们可以在代码中动态加载

                ResourceDictionary resourceDictionary = new ResourceDictionary();
                //这里的Uri格式:/解决方案;component/资源文件路径
                Application.LoadComponent(resourceDictionary, new Uri("/LoadResourceDictionary;component/BlueButtonResource.xaml", UriKind.Relative));
                Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);

  • 相关阅读:
    LG4377 「USACO2018OPEN」Talent Show 分数规划+背包
    LG4111/LOJ2122 「HEOI2015」小Z的房间 矩阵树定理
    LG5104 红包发红包 概率与期望
    LG2375/LOJ2246 「NOI2014」动物园 KMP改造
    LG4824 「USACO2015FEB」(Silver)Censoring KMP+栈
    20191004 「HZOJ NOIP2019 Round #9」20191004模拟
    LG5357 「模板」AC自动机(二次加强版) AC自动机+fail树
    LG3812 「模板」线性基 线性基
    数据结构
    git
  • 原文地址:https://www.cnblogs.com/bomo/p/3618522.html
Copyright © 2020-2023  润新知