《Programming WPF》翻译 第5章 7.控件模板

如果仔细的看我们当前的TTT游戏,会发现Button对象并没有完全为我们工作 。哪些TTT面板有内圆角?

图5-14

这里,我们真正需要的是能够保持按钮的行为,如支持内容和点击事件,但 是我们想要接管这些按钮的外观。WPF允许这种方式,因为内在的控件创建的时 候是缺少外观性的,例如,他们提供行为,但是外观可以被完全包装在客户端控 件的外面。

还记得我们是如何使用数据模板,来为非可视化对象提供外观的么?我们能 够使用控件模板对控件做同样的事情,这将是一组StoryBoard,触发器,以及大 多数重要的提供控件外观的元素。

为了修复我们的按钮外观,我们创建了一个控件模板的资源。让我们从示例 5-31出发,这是一个带有简单的矩形,和以后考虑如何显示实际的按钮内容。

示例5-31

<Window.Resources>
  <ControlTemplate x:Key="ButtonTemplate">
    <Rectangle />
  </ControlTemplate>

  <!-- let's just try one button for now -->
  <Button Template="{StaticResource ButtonTemplate}"  />

</Window.Resources>

图5-15显示了设置一个单独按钮的Template属性的结果。

注意到按钮过去样子的痕迹(保留在图5-15中)。不幸的是,看不到我们的 矩形的痕迹。问题在于,缺少一个显示的填充设置,这个矩形的默认填充是透明 的,显示grid的黑色背景。让我们将其设置为喜欢的万圣节颜色:

<ControlTemplate x:Key=”ButtonTemplate”>
            <Rectangle Fill=”Orange” />
</ControlTemplate>

图5-15

时间: 2024-10-02 20:21:53

《Programming WPF》翻译 第5章 7.控件模板的相关文章

从WPF Diagram Designer Part 1学习控件模板、移动、改变大小和旋转

由于上周主要做了项目组产品架构.给公司新员工培训以及其他会议等事情,在OpenExpressApp对建模支持的初步计划中我列了一些建模任务还没有开展,其中参考部分在以前的blog中都已经介绍了(MetaModelEngine:元模型引擎开发思路.DSM:使用MetaEdit+编写Family Tree Modeling Language.读书笔记:Visual Studio DSL工具特定领域开发指南).今天手头上没有其他重要事情了,可以开始进行学习WPF的图形设计器了,这也就是我在WPF -

WPF笔记(1.9 样式和控件模板)——Hello,WPF!

资源的另一个用途是样式设置: <Window > <Window.Resources> <Style x:Key="myStyle" TargetType="{x:Type TextBlock}"> <Setter Property="VerticalAlignment" Value="Center" /> <Setter Property="FontWeight

WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu

原文:WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 菜单Menu的自定义样式: 右键菜单ContextMenu的自定义样式: 树控件TreeView的自定义样式,及右键菜单实现. 二.菜单Menu的自定义样式 自定义菜单样式的效果图: Menu和Context

WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式

原文:WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: DataGrid自定义样式: ListView自定义样式: 二.DataGrid自定义样式 DataGrid是常用的数据列表显示控件,先看看实现的效果(动态图,有点大): DataGrid控件样式结构包括以下几个部分

wpf 设计时 c#-WPF设计时无法找到用户控件类型的问题

问题描述 WPF设计时无法找到用户控件类型的问题 最近用WPF做个东西.写了一个用户控件.在这个用户控件自己的设计时它是正常的.可以显示.但是把它加到窗体里的时候报告说找不到指定类型.命名空间正常引入.还有就是在运行时它也是正常的.为什么设计时会找不到类型呢?

怎么样让wpf中前台已存在的控件的属性可以在后台代码中设置

问题描述 怎么样让wpf中前台已存在的控件的属性可以在后台代码中设置 怎么样让wpf中前台已存在的控件的属性可以在后台代码中设置,比如说xaml中已经存在一个border,我想要在后台代码中初始化他的旋转角度 解决方案 这些属性是可以在后台代码中设置的,直接在后台.cs文件里写就是了 解决方案二: 好像不能把,比如说 在后台代码怎么修改Angle属性呢 解决方案三: http://www.cnblogs.com/slowhand/archive/2013/05/13/3076259.html 亲

WPF自定义控件与样式(10)-进度控件ProcessBar自定义样

原文:WPF自定义控件与样式(10)-进度控件ProcessBar自定义样 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: ProcessBar自定义标准样式: ProcessBar自定义环形进度样式: 二.ProcessBar标准样式 效果图:   ProcessBar的样式非常简单:   <!--ProgressBar Style--> <

WPF布局之让你的控件随着窗口等比放大缩小,适应多分辨率满屏填充应用

一直以来,我们设计windows应用程序,都是将控件的尺寸定好,无论窗体大小怎么变,都不会改变,这样的设计对于一般的应用程序来说是没有问题的,但是对于一些比较特殊的应用,比如有背景图片的,需要铺面整个屏幕,由于存在多种不同的分辨率,所以会出现布局混乱的情况.今天我们来看看WPF中如何让我们的控件也随着分辨率放大缩小.下面来写一个例子看看效果吧~    一.普通布局中的问题   这里我们写一个简单的页面,新建WPF项目,在MainWindow里面添加按钮,如下图: 这个页面很简单,只有三个按钮,我

wpf mvvm 模式的datagrid控件模板列的列头里的checkbox怎么在viewmodel里撤销勾选状态

问题描述 wpfmvvm模式的datagrid控件模板列的列头里的checkbox怎么在viewmodel里撤销勾选状态点击全选,点击下一页分以后全选框还是勾选状态,希望datagrid重新加载数据后模板的全选状态为未勾选, 解决方案 解决方案二:你需要编写勾选的点击事件,绑定只是用来显示而不是做动作处理,mvvm模式也需要后台事件处理的支持的.