当前位置: 首页 > news >正文

wpf之ContentPresenter

前言

我们在开发wpf程序的过程中,为了提高代码的重复利用率,经常会使用模板技术,本文就是介绍ControlTemplate中的ContentPresenter的作用。

1、ContentPresenter放置于中

1.1 创建模板

ContentPresenter常用于ControlTemplate中,它表示占位符,比如下面的代码中建立了一个模板,该模板中含有一个Border ,这个边框控件设置为红色,变宽厚度为10,并在其中放置了一个ContentPresenter ,并指定该控件代表的内容也就是Buttton的Content内容水平居中,垂直居中。

<Window x:Class="wpf之controlTemplate.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:wpf之controlTemplate"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><ControlTemplate x:Key="btn_temp" TargetType="{x:Type Button}"><Border  BorderBrush="Red"  BorderThickness="10"   Background="{TemplateBinding Background }" ><ContentPresenter    HorizontalAlignment="Center" VerticalAlignment="Center" /></Border></ControlTemplate></Window.Resources><StackPanel><Button   Height="300" Content="按钮" Background="Blue"  Template="{StaticResource btn_temp}"/></StackPanel>
</Window>

1.2 使用模板

最终在Window窗体中放置一个StackPanel,StackPanel中放置一个Button,由于该Button使用了模板btn_temp,所以在中间显示了Button的Content属性。
在这里插入图片描述

2、ContentPresenter放置于Grid中

2.1 创建模板

ContentPresenter常用于ControlTemplate中,它表示占位符,比如下面的代码中建立了一个模板,该模板中含有一个Grid,这个Grid有两行,第一行高度为100,第二行占用剩余所有高度,其中第一行放置了一个椭圆控件Ellipse ,并指定椭圆的填充色与使用该模板的控件的背景色相同;第2行放置了一个ContentPresenter ,并指定该控件代表的内容也就是Buttton的Content内容水平居中,垂直居中。

<Window x:Class="wpf之controlTemplate.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:wpf之controlTemplate"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><ControlTemplate x:Key="btn_temp" TargetType="{x:Type Button}"><Grid  ><Grid.RowDefinitions ><RowDefinition Height=" 100"/><RowDefinition Height="*"/></Grid.RowDefinitions ><Ellipse Grid.Row="0" Name="ellipse" Fill="{TemplateBinding Background}"/><ContentPresenter Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" /></Grid></ControlTemplate></Window.Resources><StackPanel><Button  Height="300" Content="圆形按钮" Background="Blue"  Template="{StaticResource btn_temp}"/></StackPanel>
</Window>

2.2 使用模板

最终在Window窗体中放置一个StackPanel,StackPanel中放置一个Button,由于该Button使用了模板btn_temp,所以分为上下两部分,上部分是一个椭圆,下部分显示了Button的Content属性。
在这里插入图片描述

马工撰写的年入30万+C#上位机项目实战必备教程(点击下方链接即可访问文章目录)

1、《C#串口通信从入门到精通》
2、《C#与PLC通信从入门到精通 》
3、《C# Modbus通信从入门到精通》
4、《C#Socket通信从入门到精通 》
5、《C# MES通信从入门到精通》
6、《winform控件从入门到精通》
7、《C#操作MySql数据库从入门到精通》

http://www.dtcms.com/a/307408.html

相关文章:

  • 《Java 程序设计》第 14 章 - JavaFX 基础
  • windows服务器 maven 配置环境变量,验证maven环境变量是否配置成功
  • AI在法律合同内容比对的应用实例
  • 使用 Elasticsearch 和 AI 构建智能重复项检测
  • 接口基础-智能家居控制系统
  • 家政小程序系统开发:满足多元家政需求
  • AI 类型的 IDE
  • 直播小程序 app 系统架构分析
  • FastMCP本地构建Server和Clinet交互
  • PyTorch深度学习快速入门学习总结(三)
  • selenium+pyautogui实现页面鼠标自动化控制
  • 学习Python中Selenium模块的基本用法(4:WebDriver常用属性及函数)
  • RabbitMQ的特点和消息可靠性保障
  • RabbitMQ 队列配置设置 RabbitMQ 消息监听器的并发消费者数量java
  • [Linux入门] Linux防火墙技术入门
  • rabbitmq的安装和使用-windows版本
  • 远程仓库地址发生变化
  • RabbitMQ安装与介绍
  • 推客小程序商业模型设计:合规分佣体系×盈利模式×LTV提升策略
  • Cesium 快速入门(七)材质详解
  • 一键打包所有docker镜像的脚本
  • 暑期算法训练.11
  • 【09】大恒相机SDK C#开发 ——库函数 IntPtr ConvertToRGB24详细解释 及 示例
  • 【Linux系统】库的制作与原理
  • 007TG洞察:波场TRON上市观察,Web3流量工具的技术解析与应用
  • 【Linux系列】SSD 与 HDD
  • 学习日志23 python
  • 深度理解 linux 系统内存分配
  • 用 AI 解析采购订单,从上传到自动生成 Draft 订单全流程实战
  • 多种录音笔录音芯片方案推荐