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

    wpf的资源是很有意思的东西,仅次于binding和依赖属性之类。

    资源分为几种,其一是自定义的,也就是说写在资源字典中的,比如,我新建了一个资源字典

    1、逻辑资源

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <ResourceDictionary.MergedDictionaries >
            <ResourceDictionary Source="color.xaml"/>
        </ResourceDictionary.MergedDictionaries>

    /*这一段代码是引用另外一个资源字典,那个字典只是一个颜色字典*/

        <LinearGradientBrush x:Key="BrushMainWindow">
            <GradientStop Offset="0" Color="SteelBlue"/>
            <GradientStop Offset="0.5" Color="red"/>
            <GradientStop Offset="1" Color="SteelBlue"/>
        </LinearGradientBrush>

    /*Look,上面我定义了一个简单的线性背景,在window1的xaml 中

    <Grid Background="{StaticResource BrushMainWindow}">就可以使用了!

    Look,只需要使用StaticResource就可以自动寻找,如果找不到或者么有引用资源字典,就会报错

    */

    <Style x:Key="DemoAreaBackgroundStyle" TargetType="Rectangle" >
            <Setter Property="Fill" Value="SteelBlue" />
            <Setter Property="OpacityMask">
                <Setter.Value>
                    <RadialGradientBrush>
                        <GradientStop Color="#FF000000" Offset="0"/>
                        <GradientStop Color="#AA000000" Offset=".6"/>
                        <GradientStop Color="#00FFFFFF" Offset="1"/>
                    </RadialGradientBrush>
                </Setter.Value>
            </Setter>
        </Style>

    /*Look,定义了一个简单的Rectangle样式,在window1的xaml 中

    <Rectangle Style="{StaticResource DemoAreaBackgroundStyle}"></Rectangle>就可以使用了!

    */

    </ResourceDictionary>

    /*这里的staticresource 就是引用静态资源的标识符,{}是一个标示这是引用的意思,大概是这么理解啦!这也就是所谓的逻辑资源*/

    2、二进制资源

    这个没有什么太不了的,如果 一个背景图片要使用,你必须寻找一个图片,而且这图片还要包含在项目中,这种包含就是所谓的二进制转化,引用的时候,就可以直接引用资源,比如,你把一个fish.png放在了image文件夹中,使用的时候直接:

     <Image Height="21" Source="image\fish.png"></Image>就可以使用了!

    大概就是这个意思!

    3、动态资源

    貌似是寻找方式不一样,没用过,用的时候再写!

    恩,已经用到了。。。。可以继续写了!

    <Style x:Key="DemoAreaBackgroundStyle" TargetType="Rectangle" >
            <Setter Property="Fill" Value="SteelBlue" />
            <Setter Property="OpacityMask">
                <Setter.Value>
                    <RadialGradientBrush>
                        <GradientStop Color="#FF000000" Offset="0"/>
                        <GradientStop Color="#AA000000" Offset=".6"/>
                        <GradientStop Color="#00FFFFFF" Offset="1"/>
                    </RadialGradientBrush>
                </Setter.Value>
            </Setter>
        </Style>

    /*Look,定义了一个简单的Rectangle样式,在window1的xaml 中

    <Rectangle Style="{StaticResource DemoAreaBackgroundStyle}"></Rectangle>就可以使用了!

    */

    上面的使用方法只是在xmal中,如果在cs代码中,可以用另一种方式调用

    rect.Style=this.FindResource("DemoAreaBackgroundStyle") as Style;

    这里的rect当然是一个Rectangle类型了,这个你还必须在xmal中引用资源

    <Window.Resources>
            <ResourceDictionary Source="typecolor.xaml"/>
        </Window.Resources>

    貌似不引用是不行滴!

    ok!资源应用大抵如此,wpf没有想象那么难,当然,也不简单。。。

  • 相关阅读:
    对于Netty的十一个疑问
    IDEA中:求类似于eclipse中的ctrl+shift+o,我之前配置过后来重装找不到了,不是alt+enter也不是勾选自动导包
    Android之assets资源目录的各种操作
    五种方式让你在java中读取properties文件内容不再是难题
    Delphi 接口使用中,对象生命周期管理,如何释放需要注意的问题
    利用FR导出PDF汉字乱码的处理
    赵伟国辞去TCL集团董事等职位,紫光参与TCL定增浮盈已超7亿
    中山的房价
    webpack
    为什么需要索引
  • 原文地址:https://www.cnblogs.com/fish124423/p/2507379.html
Copyright © 2011-2022 走看看