WPF基础五:UI③带标题内容控件Expander
HeaderedContentControl
为包含单项内容并具有标头的所有控件提供基实现。
HeaderedContentControl 从 ContentControl 继承 Content 属性 ,并定义 Header 的属性类型为 Object 。提供 Header 控件的标题。像ContentControl的Content属性一样,Header可以是任何类型。
下图显示了两个TabItem对象,它们继承自HeaderedContentControl。第一个TabItem在标题和内容中都具有UIElement对象作为内容:标题设置为包含Ellipse和TextBlock的StackPanel;在内容设置为StackPanel中包含的TextBlock和标签。第二个TabItem的Header设置为字符串,并且Content设置为单个TextBlock。
Header属性中具有不同类型的TabControl
一个HeaderedContentControl具有有限的默认样式。应用程序开发人员可以创建HeaderedContentControl,但是其外观将非常简单。如果希望增强控件的外观,则可以创建一个新的ControlTemplate。一个HeaderedContentControl是用于创建自定义的控件,因为它提供了与头单内容控制模型非常有用。
此控件的依赖项属性可以由控件的默认样式设置。如果使用默认样式设置属性,则当控件出现在应用程序中时,该属性可能会从其默认值更改。默认样式由运行应用程序时使用的桌面主题确定。有关更多信息,请参见默认WPF主题。
名称 | 备注 | 权限 |
---|---|---|
HasHeaderProperty | 标识 HasHeader 依赖项属性。 | public static readonly |
HeaderProperty | 标识 Header 依赖项属性。 | public static readonly |
HeaderStringFormatProperty | 标识 HeaderStringFormat 依赖项属性。 | public static readonly |
HeaderTemplateProperty | 标识 HeaderTemplate 依赖项属性。 | public static readonly |
HeaderTemplateSelectorProperty | 标识 HeaderTemplateSelector 依赖项属性。 | public static readonly |
名称 | 备注 | 权限 |
---|---|---|
HasHeader |
获取一个指示标头是否为 null 的值。
|
get; |
Header | 获取或设置每个控件的标题所用的数据。 | get; set; |
HeaderStringFormat | 获取或设置一个撰写字符串,该字符串指定如果 Header 属性显示为字符串,应如何设置该属性的格式。 | get; set; |
HeaderTemplate | 获取或设置用于显示控件标头的内容的模板。 | get; set; |
HeaderTemplateSelector | 获取或设置一个数据模板选择器,以提供自定义逻辑来选择用于显示标头的模板。 | get; set; |
LogicalChildren | 获取 ControlTemplate 的逻辑子元素的枚举器。 | get; |
名称 | 备注 | 权限 |
---|---|---|
OnHeaderChanged | 在 Header 的 HeaderedContentControl 属性更改时调用。 | protected |
OnHeaderStringFormatChanged | 当 HeaderStringFormat 属性更改时调用。 | protected |
OnHeaderTemplateChanged | 当 HeaderTemplate 属性更改时调用。 | protected |
OnHeaderTemplateSelectorChanged | 当 HeaderTemplateSelector 属性更改时调用。 | protected |
ToString | 提供 HeaderedContentControl 的字符串表示形式。 | public |
Expander
表示一个弹出菜单,该弹出菜单使控件能够公开特定于该控件的上下文的功能。
Expander 为 HeaderedContentControl ,这意味着其 Content 和 Header 属性可以是任何类型 (例如字符串、图像或面板) 。 有关更多信息,请参见 HeaderedContentControl 类。
下图显示了一个 Expander 控件。
如果展开的窗口的内容对窗口而言太大,则可以将 Expander 控件中的内容包装在ScrollViewer 以提供可滚动的内容。 Expander控件不自动提供滚动功能 。
为了使Expander正常工作,当ExpandDirection属性设置为Down或Up时,请不要在Expander控件上指定Height。同样,当ExpandDirection属性设置为Left或Right时,也不要在Expander控件上指定Width。 当您在 Expander 控件上设置扩展内容的方向时,则由size参数定义的区域将显示为带有边框。 即使窗口处于折叠状态,也会显示此区域。 若要设置扩展窗口的大小,请在Expander控件或包围该内容的ScrollViewer的内容上设置大小尺寸
如果 Expander 控件是 DockPanel 中的最后一个元素,Expander 则将调整大小以填充 DockPanel 的剩余区域。 若要防止出现这种情况,请将 DockPanel 的 LastChildFill 的属性设置为 false
,或确保 Expander 不是DockPanel 中的最后一个元素。
可以通过在Expander控件设置 HorizontalContentAlignment 和VerticalContentAlignment 属性来定义内容的对齐方式。 这些属性将应用于标头和展开窗口的内容。
自定义扩展器控件
若要对多个 Expander 控件应用相同的属性设置 ,请使用 Style 属性。 您可以修改 ControlTemplate默认值 ,为控件指定独特的外观。 有关创建ControlTemplate的详细信息 ,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于Expander的部分和状态 ,请参阅 扩展器样式和模板。
此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题。
只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。
名称 | 备注 | 权限 |
---|---|---|
CollapsedEvent | 标识 Collapsed 路由事件。 | public static readonly |
ExpandDirectionProperty | 标识 ExpandDirection 依赖项属性。 | public static readonly |
ExpandedEvent | 标识 Expanded 路由事件。 | public static readonly |
IsExpandedProperty | 标识 IsExpanded 依赖项属性。 | public static readonly |
名称 | 备注 | 权限 |
---|---|---|
ExpandDirection |
获取或设置 Expander 内容窗口的打开方向。 | get; set; |
IsExpanded |
获取或设置 Expander 内容窗口是否可见。 | get; set; |
名称 | 备注 | 权限 |
---|---|---|
OnApplyTemplate |
每当应用程序代码或内部进程调用 ApplyTemplate() 时,进行调用。 | protected |
OnCollapsed |
当 Collapsed 属性从 true 更改为 false 时引发 IsExpanded 事件。
|
protected |
OnCreateAutomationPeer |
创建 AutomationPeer 控件的 Expander 实现。 | protected |
OnExpanded |
当 Expanded 属性从 false 更改为 true 时引发 IsExpanded 事件。
|
protected |
名称 | 备注 |
---|---|
Collapsed |
在 Expander 控件的内容窗口关闭且只有 Header 可见时发生。 |
Expanded |
在 Expander 控件的内容窗口打开时发生,以便同时显示其标题和内容。 |
XAML代码
主要属性Header、Content、ExpandDirection、IsExpanded。
Header是控件标题。
Content是控件内容。
ExpandDirection控件展开方向。(注意,展开方向不要限制尺寸)。
IsExpanded是加载窗口后控件默认时候打开。(收缩和展开2种状态。)
主要的2个事件Collapsed、Expanded。在控件展开或收拢时发生。
范例:
Collapsed、Expanded更改控件标题Header。
展开方向ExpandDirection向下。
<Window x:Class="ExpanderDemo.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:ExpanderDemo"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><Expander Width="200" Header="Expander" ExpandDirection="Down" IsExpanded="True" Collapsed="OnCollapsed" Expanded="OnExpanded"><StackPanel><Button Content="LightSeaGreen" Click="OnClick1"/><Button Content="LightSkyBlue" Click="OnClick2"/><Button Content="White" Click="OnClick3"/></StackPanel></Expander></Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace ExpanderDemo
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void OnCollapsed(object sender, RoutedEventArgs e){(sender as Expander).Header = "Expander is Collapsed";}private void OnExpanded(object sender, RoutedEventArgs e){(sender as Expander).Header = "Expander is Expanded";}private void OnClick1(object sender, RoutedEventArgs e){(((sender as Button).Parent as StackPanel).Parent as Expander). Background = Brushes.LightSeaGreen;}private void OnClick2(object sender, RoutedEventArgs e){(((sender as Button).Parent as StackPanel).Parent as Expander).Background = Brushes.LightSkyBlue;}private void OnClick3(object sender, RoutedEventArgs e){(((sender as Button).Parent as StackPanel).Parent as Expander).Background = Brushes.White;}}
}
C#代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace ExpanderDemo
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();Expander expander = new Expander();expander.Width = 200;expander.Header = "Expander";expander.ExpandDirection = ExpandDirection.Down;expander.IsExpanded = true;expander.Collapsed += OnCollapsed;expander.Expanded += OnExpanded;StackPanel stackPanel = new StackPanel();Button button1 = new Button();Button button2 = new Button();Button button3 = new Button();button1.Content = "LightSeaGreen";button1.Click += OnClick1;button2.Content = "LightSkyBlue";button2.Click += OnClick2;button3.Content = "White";button3.Click += OnClick3;stackPanel.Children.Add(button1);stackPanel.Children.Add(button2);stackPanel.Children.Add(button3);expander.Content = stackPanel;(this.Content as Grid).Children.Add(expander);}private void OnCollapsed(object sender, RoutedEventArgs e){(sender as Expander).Header = "Expander is Collapsed";}private void OnExpanded(object sender, RoutedEventArgs e){(sender as Expander).Header = "Expander is Expanded";}private void OnClick1(object sender, RoutedEventArgs e){(((sender as Button).Parent as StackPanel).Parent as Expander). Background = Brushes.LightSeaGreen;}private void OnClick2(object sender, RoutedEventArgs e){(((sender as Button).Parent as StackPanel).Parent as Expander).Background = Brushes.LightSkyBlue;}private void OnClick3(object sender, RoutedEventArgs e){(((sender as Button).Parent as StackPanel).Parent as Expander).Background = Brushes.White;}}
}
WPF基础五:UI③带标题内容控件Expander相关推荐
- WPF基础五:UI④ 条目控件ContextMenu
派生关系: Object->DispatcherObject->DependencyObject->Visual->UIElement->FrameworkElement ...
- WPF基础五:UI②内容元素Frame
Frame 框架是一种支持导航的内容控件. Frame 提供导航到和显示内容的功能的内容控件. Frame 与其他控件和元素一样,可在其他内容中托管. 当 Frame 控件导航到 HTML 内容时, ...
- Silverlight带关闭动画的内容控件,可移动的内容控件(一)
本例给大家介绍两个自定义控件,一个有显示和关闭两种状态,在状态切换时有动画效果.另外一个是可以拖动的内容控件,可以制作能拖动的面板. A.带关闭动画的内容控件. .xaml View Code < ...
- Windows phone8 基础篇(三) 常用控件开发
广告: 为了方便我们大家一起学习和讨论,我开设了一个群300143953.专门关于windows phone开发学习的群.因为群刚建,所以没人.欢迎大家.另外如果出现啥错误性的问题,希望大家能够 指 ...
- 【转】WPF从我炫系列4---装饰控件的用法
在这一节的讲解中,我将为大家介绍WPF装饰控件的用法,主要为大家讲解一下几个控件的用法. ScrollViewer滚动条控件 Border边框控件 ViewBox自由缩放控件 1. ScrollVie ...
- 【转】WPF从我炫系列3---内容控件的用法
今天我来给大家讲解WPF中内容控件的用法,在WPF中的内容控件,通俗的讲,是指具有Content属性的控件,在content属性里面可以嵌套放置任意其他类型的控件,但是Content只能接受单个元素, ...
- 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget
本节对应的视频讲解:B_站_链_接 QTableWidget 是 Qt 中的表格控件,可以行列的形式来展示数据 1. 属性和方法 QTableWidget 有很多属性和方法,完整的可查看帮助文档. 在 ...
- 【愚公系列】2023年07月 WPF+上位机+工业互联 002-WPF布局控件
文章目录 前言 一.WPF布局控件 1.无边框设计 2.理解布局 2.1 WPF的布局处理 2.1 布局原则 2.3 布局过程 3.布局控件 3.1 Grid控件 3.1.1 属性 3.1.2 案例 ...
- 【转】WPF从我炫系统5---基本控件的用法
今天我来给大家讲解WPF中一些基本控件的用法,所谓基本控件,就是我们最常用用到的一些控件,通过这一节的讲解,大家会对WPF中的控件的用法有一个更深入的了解. 1. 基本控件 LABEL控件 ...
最新文章
- 关于微博溯源的后续问题
- OpenCV用于人脸检测
- 把字符串里的整数倒叙一个一个打印出来
- java大文件解析_java大文件(百M以上)的上传下载实例解析
- Git 提交失败提示无写入权限与 Linux 下创建文件的默认权限
- MySQL运行一段时间后自动停止问题的排查
- Solr7.2.1环境搭建和配置ik中文分词器
- 应届生月薪2W,财务人却不涨薪?那是你不会这种财务分析
- 爬取网易,搜狐,凤凰和澎湃网站评论数据,正负面情感分析
- 10年年初写的述职报告
- 安装GLPI资产管理
- PLC可编程控制器实验
- 安卓手机软件性能测试,手机性能评测软件
- 2022年mvnrepository跳过人机验证
- XYplorer 23多语言,最好的管理软件之一
- 用 Python 轻松将懂车帝视频转换为文本
- 利用上虚拟化,说一下TLB,以及VHE
- 计算机网络胡工程施工税率,弱电项目增值税6%、9%、13%税率怎样区分?项目经理必知...
- 流媒体协议之WebRTC实现p2p视频通话(二)
- 日化美妆难突围,看爱码物联如何冲破传统营销壁垒
热门文章
- MFC exe替换大、中、小图标方法
- 阿里是如何使用分布式架构的,阿里内部学习手册分享
- 算法进阶课first
- vite创建react项目及基础配置
- 华为emui3.1 android,EMUI3.1——基于安卓5.0深度定制
- 2013年阿里巴巴实习生招聘笔试题
- vue实现web端飘窗组件
- D900 终于用上了几近完美的 ROM
- 适合女生的计算机配置,什么笔记本电脑适合女生用 推荐4款适合女生笔记本电脑...
- 微型计算机主板usb电源损坏,硬盘盒也能带来灾难?修复主板烧毁的USB线路