码迷,mamicode.com
首页 > 其他好文 > 详细

WPF-资源

时间:2014-05-08 17:42:19      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   tar   

在WPF中资源通常用作“样式”(Style)、样式模板、数据模板等。

一、资源的定义及使用

1. 应用程序级资源:

定义在App.xaml文件中,作为整个应用程序共享的资源

bubuko.com,布布扣
1    <Application x:Class="DeepXAML.App"
2                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4                 StartupUri="MainWindow.xaml">
5        <Application.Resources>
6            <SolidColorBrush Color="Red" x:Key="redBrush"></SolidColorBrush> 
7        </Application.Resources>
8    </Application>
bubuko.com,布布扣

 

使用应用程序集资源

 
bubuko.com,布布扣
01    <Window x:Class="DeepXAML.MainWindow"
02            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
03            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
04            xmlns:local="clr-namespace:DeepXAML"       
05            xmlns:sys="clr-namespace:System;assembly=mscorlib"
06            Title="MainWindow" Height="250" Width="450">   
07        <StackPanel x:Name="stackPanel">
08            <Button Background="{StaticResource ResourceKey=redBrush}">test app resource</Button> 
09        </StackPanel>
10    </Window>
bubuko.com,布布扣

 

2. 窗体级资源:定义在Window或Page中,作为一个窗体或页面共享的资源存在

 
bubuko.com,布布扣
01    <Window x:Class="DeepXAML.MainWindow"
02            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
03            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
04            xmlns:local="clr-namespace:DeepXAML"       
05            xmlns:sys="clr-namespace:System;assembly=mscorlib"
06            Title="MainWindow" Height="250" Width="450">  
07        <Window.Resources>
08            <SolidColorBrush Color="Red" x:Key="redBrush"></SolidColorBrush> 
09        </Window.Resources>
10        <StackPanel x:Name="stackPanel">
11            <Button Background="{StaticResource ResourceKey=redBrush}">test app resource</Button> 
12        </StackPanel>
13    </Window>
bubuko.com,布布扣

 

 

3. 文件级资源:定义在资源字典的XAML文件中,再引用

在Visual Studio的WPF应用程序项目中,添加“资源字典(Resource Dictionary)”类型的项


bubuko.com,布布扣
 
1    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
2                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
3        <SolidColorBrush Color="Red" x:Key="redBrush"></SolidColorBrush> 
4    </ResourceDictionary>
 
01    <Window x:Class="DeepXAML.MainWindow"
02            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
03            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
04            xmlns:local="clr-namespace:DeepXAML"       
05            xmlns:sys="clr-namespace:System;assembly=mscorlib"
06            Title="MainWindow" Height="250" Width="450">  
07        <Window.Resources>
08            <ResourceDictionary Source="Skin1.xaml"></ResourceDictionary> 
09        </Window.Resources>
10        <StackPanel x:Name="stackPanel">
11            <Button Background="{StaticResource ResourceKey=redBrush}">test app resource</Button> 
12        </StackPanel>
13    </Window>
bubuko.com,布布扣

 

4.对象(控件)级资源:定义在某个ContentControl中,作为其子容器、子控件共享的资源

bubuko.com,布布扣
01    <Window x:Class="DeepXAML.MainWindow"
02            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
03            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
04            xmlns:local="clr-namespace:DeepXAML"       
05            xmlns:sys="clr-namespace:System;assembly=mscorlib"
06            Title="MainWindow" Height="250" Width="450">  
07         <StackPanel x:Name="stackPanel">
08            <StackPanel.Resources>
09                <ResourceDictionary Source="Skin1.xaml"></ResourceDictionary> 
10            </StackPanel.Resources>
11            <Button Background="{StaticResource ResourceKey=redBrush}">test app resource</Button> 
12        </StackPanel>
13    </Window>
14      

bubuko.com,布布扣

二、资源文件解析的顺序

这个顺序和层叠样式表类似,优先级从高到底为:对象级,窗体级,应用程序集。静态资源(StaticResource)和动态资源(DynamicResource)

资源可以作为静态资源或动态资源进行引用。这是通过使用 StaticResource 标记扩展或 DynamicResource 标记扩展完成的。

通常来说,不需要在运行时更改的资源使用静态资源;而需要在运行时更改的资源使用动态资源。动态资源需要使用的系统开销大于静态资源的系统开销。

 

三、静态资源(StaticResource)和动态资源(DynamicResource)

资源可以作为静态资源或动态资源进行引用。这是通过使用 StaticResource 标记扩展或 DynamicResource 标记扩展完成的。

通常来说,不需要在运行时更改的资源使用静态资源;而需要在运行时更改的资源使用动态资源。动态资源需要使用的系统开销大于静态资源的系统开销。

bubuko.com,布布扣
Background="{DynamicResource redBrush}"
 
private void Button_Click(object sender, RoutedEventArgs e)
{
   SolidColorBrush brush = new SolidColorBrush(Colors.Green);
   this.Resources["redBrush"] = brush;
}
bubuko.com,布布扣

 

WPF-资源,布布扣,bubuko.com

WPF-资源

标签:style   blog   class   code   java   tar   

原文地址:http://www.cnblogs.com/tianmahygj/p/3715716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!