WPF高级教程(十五)对象资源

概念

对象资源是使用代码定义的一系列可以重用的对象,包括 画刷,样式,模板 等。WPF允许在代码中以及在xaml中各个位置定义对象资源。

资源集合

在FrameworkElement中定义了一个Resources属性,该属性使用Resource Dictionary类的实例填充,用于存储元素上的资源。根据我们之前学习的体系结构,定义在FrameworkElement也就表明了所有的WPF元素都具有资源的属性。

每个元素的子元素可以访问自己的和父元素的资源。所以一般我们将资源定义在窗口的资源属性中。

下面我们举例看一下资源的定义和使用

<Window.Resources>
    <SolidColorBrush x:Key="RedBrush" Color="Red"/>
</Window.Resources>
<Grid>
    <StackPanel>
        <Button Background="{StaticResource RedBrush}">测试1</Button>
    </StackPanel>
</Grid>

资源层次

我们之前讲了,元素会从自己的资源属性和父元素的资源属性中查找资源进行使用,事实上窗口元素也不是最后一站,其查找层次是:

自己的资源 - 父元素的资源 - 应用程序资源 - 系统资源

其中应用程序资源和系统资源我们下面再将,我们可以先看一个问题:如果自己有一个资源,父元素中有一个同名的资源,会怎么样呢?

首先我们先问行不行,再看怎么样,能否同名呢?答案是能,下面的例子展示了这种情况

<Window.Resources>
    <SolidColorBrush x:Key="RedBrush" Color="Red"/>
</Window.Resources>
<Grid>
    <StackPanel>
        <Button>
            <Button.Resources>
                <SolidColorBrush x:Key="RedBrush" Color="Blue"/>
            </Button.Resources>
            <Button.Background>
                <StaticResource ResourceKey="RedBrush"/>
            </Button.Background>
            <Button.Content>
                测试1
            </Button.Content>
        </Button>
    </StackPanel>
</Grid>

上面代码在按钮的Resources中也定义了同名的Brush,最终运行结果是 蓝色

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows Presentation Foundation (WPF) 是.NET Framework 3.0 的关键组件,是支持下一代视窗应用程序表现层编程的平台,也是微软新发布的Vista操作系统的三大核心开发库之一,主要负责图形显示。本书是针对那些对用户界面开发感兴趣的软件开发人员编写的,易于理解,适合那些.NET的新手,并有助于理解像Microsoft Expression Blend这样产品的精髓。   本书适合各层次Web开发人员阅读。 第一部分 背景 第1章 为什么创造WPF    1.1 回顾过去    1.2 步入WPF    1.3 作为.NET Framework的组成部分     1.3.1 为托管代码而设计     1.3.2 强调声明式描述    1.4 小结   第2章 XAML揭秘    2.1 XAML定义    2.2 元素和特性    2.3 命名空间    2.4 属性元素    2.5 类型转换器    2.6 标记扩展    2.7 对象元素的子元素     2.7.1 内容属性     2.7.2 集合项     2.7.3 更多类型转换    2.8 编译:将XAML与过程式代码混合使用     2.8.1 在运行时加载和解析XAML     2.8.2 编译XAML     2.8.3 XAML关键字    2.9 小结     2.9.1 抱怨1:XML太过冗长不便于输入     2.9.2 抱怨2:基于XML的系统性能差   第3章 WPF的重要新概念    3.1 逻辑树与可视树    3.2 依赖属性     3.2.1 依赖属性的实现     3.2.2 变更通知     3.2.3 属性值继承     3.2.4 对多个提供程序的支持     3.2.5 附加属性    3.3 路由事件     3.3.1 路由事件的实现     3.3.2 路由策略和事件处理程序     3.3.3 路由事件实践     3.3.4 附加事件    3.4 命令     3.4.1 内建命令     3.4.2 使用输入手势执行命令     3.4.3 带有内建命令绑定的控件    3.5 漫游类层次    3.6 小结  第二部分 构建WPF应用程序  第4章 WPF控件   第5章 尺寸缩放、定位与变换元素   第6章 使用面板做布局   第7章 构建并部署应用程序  第三部分 为专业开发人员设计的功能  第8章 资源   第9章 数据绑定   第10章 样式、模板、皮肤和主题 233 第四部分 通过富媒体使程序领先于时代  第11章 2D图形   第12章 3D图形   第13章 动画   第14章 音频、视频、语音和文档  第五部分 高级主题  第15章 与Win32、Windows Form以及ActiveX之间的互用性   第16章 用户控件和自定义控件   第17章 使用自定义面板做布局  第六部分 附录 附录 有用的工具 
简介: 内容简介   《wpf编程宝典—c#2010版》针对了解.net平台、c#语言以及visual studio开发环境的专业开发人员,深入分析了wpf。在学习本书前,不需要具备使用以前版本wpf的经验,而使用过wpf的开发人员可以通过阅读每章开头“新增功能”中突出显示的wpf新特性。   《wpf编程宝典—c#2010版》全面描述了所有wpf的主要特性,从xaml(用于定义wpf用户界面的标记语言)到3d绘图和动画。本书很少编写涉及.net framework其他特性的代码,如用于查询数据库的ado.net类。本书中不讨论这些内容。但如果需要更多有关.net而非特定于wpf的特性,请参考apress出版的许多专门介绍.net的书籍。 作者简介 Matthew MacDonald,世界顶尖的微软技术专家,微软MVP。他是Inside Visual Basic、ASP Today、Hardcore Visual Studio.NET等著名软件开发杂志的特约作者,还写作了多部脍炙人口的编程畅销书,本书为其代表作。 内容截图 目录: 《wpf编程宝典—c#2010版》 第1章 wpf概述 第2章 xaml 第3章 布局 第4章 依赖项属性 第5章 路由事件 第6章 控件 第7章 application类 第8章 元素绑定 第9章 命令 第10章 资源 第11章 样式和行为 第12章 形状、画刷和变换 第13章 几何图形和图画 第14章 效果和可视比对象 第15章 动画基础 第16章 高级动画 第17章 控件模板 第18章 自定义元素 第19章 数据绑定 第20章 格式化绑定的数据 第21章 数据视图 第22章 列表、网格和树 第23章 窗口 第24章 页面和导航 第25章 菜单、工具栏和功能区 第26章 声音和视频 第27章 3d绘图 第28章 文档 第29章 打印 第30章 与windows窗体的交互 第31章 多线程 第32章 插件模型 第33章 clickonce部署
你好!很高兴回答关于WPF的问题。在WPF教程的第三十七篇中,我们将讨论如何使用WPF中的命令(Command)。 在WPF中,命令是一种用于处理用户交互操作的机制。通过使用命令,可以将用户操作(如按钮点击、菜单选择等)与后台逻辑(如方法调用、数据处理等)解耦,从而使代码更具可维护性和重用性。 要使用命令,首先需要定义一个实现了ICommand接口的类。这个类必须实现两个方法:Execute和CanExecute。Execute方法定义了命令被执行时要执行的逻辑,而CanExecute方法则用于判断命令是否可执行。 下面是一个简单的示例: ```csharp public class MyCommand : ICommand { public event EventHandler CanExecuteChanged; public bool CanExecute(object parameter) { // 在这里判断命令是否可执行 return true; } public void Execute(object parameter) { // 在这里执行命令的逻辑 } } ``` 要在XAML中使用命令,可以使用Command属性将命令与控件关联起来。例如,你可以将一个按钮与上面定义的MyCommand关联起来: ```xml <Button Command="{Binding MyCommand}" Content="Click me!" /> ``` 在这个示例中,按钮的点击事件会触发MyCommand的Execute方法。 当然,为了使命令能够绑定到视图模型中的命令属性,你需要设置正确的数据上下文和绑定。 希望这个简单的介绍对你有所帮助!如果你对WPF的命令机制还有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值