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没有想象那么难,当然,也不简单。。。

原文地址:https://www.cnblogs.com/fish124423/p/2507379.html