WPF ControlTemplate 控件模板

http://www.cnblogs.com/zhouyinhui/archive/2007/03/28/690993.html

模板与样式

它们可以调整控件的属性,但是样式不能使用全新的由不同元素组成的可视化树替代控件原来的外观。

<Window x:Class="ApplyTemplateToControl.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="300">

<Window.Resources>
<ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}">
<Border x:Name="border" BorderBrush="Orange" BorderThickness="3" CornerRadius="10" Background="Red" TextBlock.Foreground="White">
<Grid>
<Rectangle Name="focusCue" Visibility="Hidden" Stroke="Black" StrokeThickness="1" StrokeDashArray="1 2" SnapsToDevicePixels="True"></Rectangle>
<ContentPresenter RecognizesAccessKey="True" Margin="{TemplateBinding Padding}"></ContentPresenter>
</Grid>
</Border>

<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="Background" Value="DarkRed"></Setter>
</Trigger>

<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="Background" Value="IndianRed"></Setter>
<Setter TargetName="border" Property="BorderBrush" Value="DarkKhaki"></Setter>
</Trigger>

<Trigger Property="IsKeyboardFocused" Value="True">
<Setter TargetName="focusCue" Property="Visibility" Value="Visible"></Setter>
</Trigger>

<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="border" Property="Background" Value="MistyRose"></Setter>
<Setter TargetName="border" Property="TextBlock.Foreground" Value="Gray"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>

<StackPanel Margin="5">
<Button x:Name="btnWithTemplate" Margin="5" Padding="5" Content="Button with custom template (Click _Me)" Click="btnWithTemplate_Click" HorizontalAlignment="Left" Template="{StaticResource ButtonTemplate}"></Button>
<Button Margin="5" Padding="5" Content="Button with default template" HorizontalAlignment="Right"></Button>
<Button x:Name="btnReset" Margin="5" Padding="5" Content="Reset button with custom template" Click="btnReset_Click">
</Button>
</StackPanel>
</Window>

  

时间: 2024-10-12 04:09:09

WPF ControlTemplate 控件模板的相关文章

WPF中的ControlTemplate(控件模板)(转)

原文地址 http://www.cnblogs.com/zhouyinhui/archive/2007/03/28/690993.html WPF中的ControlTemplate(控件模板)                                                                                                                        周银辉 WPF包含数据模板和控件模板,其中控件模板又包括Contro

Xamarin XAML语言教程构建ControlTemplate控件模板 (四)

Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添加到页面中,然后在ResourceDictionary中实现模板的构建即可,其语法形式如下: <Page> <Page.Resources> <ResourceDictionary> <ControlTemplate x:Key="KeyName"

Xamarin XAML语言教程构建ControlTemplate控件模板

Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的.ControlTemplate被称为控件模板,它将页面的外观和内容进行了分离,从而让开发者可以更方便的创建基于主题的页面.本节将讲解控件模板相关的内容,其中包括构建控件模板以及控件模板的模板绑定等内容. 构建控件模板 控件模板可以在应用程序级别中构建,也可以在页面级别中构建.以下将对这两个构建方式

WPF 寻找控件模板中的元素

<Window x:Class="Wpf180706.Window10"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="Window10" Height="300

WPF控件模板与数据模板(6)

什么是ControlTemplate? ControlTemplate(控件模板)不仅是用于来定义控件的外观.样式, 还可通过控件模板的触发器(ControlTemplate.Triggers)修改控件的行为.响应动画等. 通过剖析控件了解ControlTemplate的组成: 首先,创建一个WPF项目, 创建一个Button按钮, 然后选中该按钮, 右键选择编辑模板>编辑副本: 创建完成后, 会在当前页面<Windows.Resources> 键下面生成一些样式片段 , 一个key为B

控件模板学习笔记(二)

1.模板绑定TemplateBinding 什么情况下使用模板绑定? --当您仍可能想要使用公共属性更改控件的外观时,模板绑定是您的不二之选 怎么使用模板绑定? --我们还以学习笔记一中的Button为例,自定义模板中的Border的Background=“Red”,使用TemplateBinding则为Background=“{TemplateBinding Backbround}”: 等号左边的Background为Border的背景颜色,等号右边的Background为Button的属性.

Expression Blend实例中文教程(13) - 控件模板快速入门ControlTemplates

上篇,介绍了控件样式(Style)和模板(Template)的基础概念,并且演示了使用Blend设计控件样式.本篇将继续介绍使用Blend设计自定义控件模板 - ControlTemplate.ControlTemplate可以称为控件模板,简单的理解为控件结构和行为的集合.在项目设计中,经常会使用ControlTemplate创建新的控件模板或者修改现成的控件模板,使用项目的UI具有独特性.如何使用Blend创建和修改ControlTemplate是本文即将讨论的话题. 概述 对于Contro

WPF 学习之控件模板 ControlTemplate Triggers

控件模板ControlTemplate,有两部分:VistualTree视觉树,即是能看到的外观:Trigger触发器,里面包括外部条件达到某一条件下会引起的响应. <Window.Resources> <ControlTemplate x:Key="ButtonTempalted" TargetType="{x:Type Button}"> <Border Name="Border" BorderThickness

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

原文:<Programming WPF>翻译 第5章 7.控件模板 如果仔细的看我们当前的TTT游戏,会发现Button对象并没有完全为我们工作.哪些TTT面板有内圆角? 图5-14 这里,我们真正需要的是能够保持按钮的行为,如支持内容和点击事件,但是我们想要接管这些按钮的外观.WPF允许这种方式,因为内在的控件创建的时候是缺少外观性的,例如,他们提供行为,但是外观可以被完全包装在客户端控件的外面. 还记得我们是如何使用数据模板,来为非可视化对象提供外观的么?我们能够使用控件模板对控件做同样的