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