WPF : 自定义Windows Presentation Foundation的控件

虽然 Windows Presentation Foundation 中的控件模型非常多,但仍不可能提供需要的每一种控件。这时候,控件编写就派上用场了。在本文中,我将向您讲述如何使用 Windows Presentation Foundation 自定义现有控件,以及如何为您的项目创建全新的控件(或元素)。

在开发一个自定义控件之前,应该先问问自己是否真的需要它。在 Windows Presentation Foundation 中,组合、样式和模板化功能使您可以自定义现有控件,这是以前的技术所无法比拟的。在决定创建新控件之前,我们先快速讲述一下上述三种自定义控件的方法。

使用组合

创建组合控件是常见要求。所谓组合控件是指由一个以上控件组成的控件。假定您有一个用于启动视频播放的 Play 按钮。XAML 和控件如图 1 所示。

Figure 1 简单的 Play 控件

<StackPanel>
 <Button Height=”50” Width=”50” Content=”Play” />
 <Polygon HorizontalAlignment=”Center”
      Points=”0,0 0,26 17,13”
      Fill=”Black” />
</StackPanel>

您需要能够得到 play 图标并将它放置在该按钮上。您可以使用组合将 XAML 元素实际嵌入其他 XAML 元素内。例如,您可以通过更改 XAML 来创建标签和图标(作为该按钮的内容)。将这些元素放置在该按钮内的容器(此处为 StackPanel)中,这样可将它们分配给 Button 类的 Content 属性,如图 2 中所示。这样得到的按钮会象任何其他按钮一样正常工作,但它里面却有您自己的内容。

Figure 2 按钮中的所有内容

<StackPanel>
 <Button Height=”50” Width=”50”>
  <StackPanel>
   <TextBlock>Play</TextBlock>
   <Polygon Points=”0,0 0,26 17,13”
        Fill=”Black” />
  </StackPanel>
 </Button>
</StackPanel>

使用组合来创建此类控件非常简单。与 Windows Forms、Visual Basic 6.0 和 MFC 等演示技术中的控件不同,大多数组合控件都是其他控件的容器。当您真正需要的只是一个组合控件时,就不必编写自定义控件。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索windows
, 控件
, 按钮
, 组合
, window控件
, presentation
, 自定义组合控件问题
, Meidia Play控件
, foundation
, windows控件
组合控件
wpf自定义控件、wpf自定义控件教程、wpf 自定义控件 事件、wpf 自定义树控件、wpf 自定义控件 属性,以便于您获取更多的相关知识。

时间: 2024-10-25 22:19:02

WPF : 自定义Windows Presentation Foundation的控件的相关文章

WPF(Windows Presentation Foundation)

WPF(Windows Presentation Foundation)是Microsoft用于Windows的新一代显示系统: WPF统一了Windows创建.显示.操作文档.媒体和用户界面 (UI) 的方式,使开发人员和设计人员可以创建更好的视觉效果和不同的用户体验,带给用户震撼视觉体验的Windows客户端应用程序. WPF是微软新一代图形系统,运行在.NET Framework 3.0架构下,为用户界面.2D/3D 图形.文档和媒体提供了统一的描述和操作方法.基于DirectX 9/10

在windows窗体上滚动条控件的起始位置是怎么自定义的?

问题描述 在windows窗体上滚动条控件的起始位置是怎么自定义的? 在windows窗体上滚动条控件的起始位置是怎么自定义的?怎么修改窗口上滚动条的布局,在上面插入快捷定位的按钮呢? 解决方案 Win32窗体的所有控件都认为是窗体,所以创建一个自定义的控件跟创建一个win32的窗体是相似的 参考此篇文章http://www.codeproject.com/KB/miscctrl/custbutton001.aspx 先通过RegisterClassEx注册一个window class,然后就在

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

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

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

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

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

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

一起学Windows Phone7开发(十三.控件)

Windows Phone7提供了丰富的silverlight控件,但是和silverlight又有一定的区别的,其中有很多控件都是不可用的,另外有些控件即使可以用,但有一些属性也是不可用的.后面将一一介绍各个控件的基本使用方法和一些特别的属性用法. 这里两个列表说明了可用和不用控件. 可用控件: 开发(十三.控件)-windows phone">不可用控件: 不过这些控件随然不能用了,但是有一些还是可以用其他控件来替代的,比如: Label:被TextBlock取代了. ScrollBa

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

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

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

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

怎么把windows中的listview控件的图标搬到第二列?

问题描述 怎么把windows中的listview控件的图标搬到第二列? 怎么把windows中的listview控件的图标搬到第二列?怎么在第二列显示listview的图标呢? 解决方案 这个需要子类化窗体消息,然后通过窗体重绘去实现了.