zoukankan      html  css  js  c++  java
  • WPF资源

    WPF资源系统是一种保管一系列有用对象的简单方法,从而使您可以更容易重用这些对象,可以在代码中创建和操作资源,也可以在XAML标记中定义资源,一旦定义了资源,就可以在窗口标记的所有其他部分使用资源。

    1. 资源的集合

    每个元素都有Resources属性,该属性存储了一个资源字典集合。资源集合可包含任意类型的对象,并根据字符串编写索引。WPF每个继承自FrameworkElement类都具有Resource属性,每个元素即可以访问自身的Resource对象,也可以访问父对象的Resource资源。资源的定义如下:

    <Window x:Class="Example.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:Example"
    xmlns:albert="http://www.albert.com"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
    <ImageBrush x:Key="tileBrush" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 10 10"
    ImageSource="12930B932320-5b61.png" Opacity="0.3"></ImageBrush>
    </Window.Resources>
    <Grid>
    <albert:ClassTest Background="{StaticResource tileBrush}"></albert:ClassTest>
    <albert:ClassMin></albert:ClassMin>
    </Grid>
    </Window>

    Resource属性是一个资源字典集合(它是ResourceDictionary类的一个实例),资源是放在嵌套元素中,为指定资源,通过x:Key进行区分资源的名称,也就是ResourceKey属性。

    1. 资源的层次

    每个元素都有自己的资源集合,为了找到期望的资源,WPF在元素树中进行递归搜索,我们的资源定以区域可分为多个查找主要查找层次。

    系统资源:

    系统资源是系统中已经预定的资源,如SystemColors和SystemFonts等

    应用程序资源:

    定义在App.xml中的资源,这个资源在整个应用程序中都可以使用,如果计划在多个窗体中使用相同的特性,那么这个资源将是一个很好的选择

    <Application x:Class="Example.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Example"
    StartupUri="MainWindow.xaml">
    <Application.Resources>
    <ImageBrush x:Key="tileBrush" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 10 10"
    ImageSource="12930B932320-5b61.png" Opacity="0.3"></ImageBrush>
    </Application.Resources>
    </Application>

    控件资源:

    定义在控件中的资源,可以在当前控件中和当前控件的子控件使用的 资源,其定义方式如下:

    <Window x:Class="Example.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:Example"
    xmlns:albert="http://www.albert.com"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
    <ImageBrush x:Key="tileBrush1" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 10 10"
    ImageSource="12930B932320-5b61.png" Opacity="0.3"></ImageBrush>
    </Window.Resources>
    <Grid>
    <Button>
    <Button.Resources>
    <ImageBrush x:Key="tileBrush2" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 10 10"
    ImageSource="12930B932320-5b61.png" Opacity="0.3"></ImageBrush>
    </Button.Resources>
    </Button>
    </Grid>
    </Window>

    3、资源字典

    如何希望多个项目之间共享资源,可以创建资源字典。资源字典只有XAML文档,处理存储希望使用的资源以外,不做其他任何事情。只有在当前应用程序中添加资源字典,务必要将Blend Action设置为Pages,这样可以保证为了获取最佳性能而将资源字典编译为BAML。

    下面是一个资源字典的示例:

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Example">
    <ImageBrush x:Key="r1"></ImageBrush>
    </ResourceDictionary> 

    使用资源字典,需要将其合并到应用程序某些位置的资源集合中,列如,可在特定窗口中执行此操作,但通常将其合并到应用程序的资源集合中,如下所示:

    <Application x:Class="Example.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Example"
    StartupUri="MainWindow.xaml">
    <Application.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Dictionary1.xaml"></ResourceDictionary>
    <ResourceDictionary Source="Dictionary2.xaml"></ResourceDictionary>
    </ResourceDictionary.MergedDictionaries>
    <ImageBrush x:Key="tileBrush" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 10 10"
    ImageSource="12930B932320-5b61.png" Opacity="0.3"></ImageBrush>
    </ResourceDictionary>
    </Application.Resources>
    </Application>
  • 相关阅读:
    ndk-build:command not found
    Linux shell 之 sed 命令详解 第三部分
    Linux shell 之 sed 命令详解 第二部分
    Linux shell 之 sed 概述
    Linux shell 之 sed 命令详解 第一部分
    git 如何撤销 commit (未 push)
    如何在 ubuntu 系统上安装 jdk
    Ubuntu 16.04.06(32位)安装samba--“”拒绝访问”
    Ubuntu 安装 vim、ssh、samba
    OC中block对于变量的捕获
  • 原文地址:https://www.cnblogs.com/minhost/p/7444048.html
Copyright © 2011-2022 走看看