WPF实现文字纵向排布的TabItem

news/2024/11/25 19:18:41/

文章目录

    • 基本用法
    • 文字竖排显示

WPF布局

基本用法

WPF中的TabControl是一个容器控件,用于在单个窗体或页面中承载多个选项卡。每个选项卡可以包含不同的控件,用于显示不同的内容,其最简单的调用方法如下,只需在TabControl中无脑添加TabItem,就可以得到一个个用之不竭的控件抽屉了

<TabControl><TabItem Header="TAB1"></TabItem><TabItem Header="TAB2"></TabItem>
</TabControl>

在这里插入图片描述

通过调整TabStripPlacement属性,可以更改抽屉标题的位置,例如

<TabControl TabStripPlacement="Left"><!--内容不变-->
</TabControl>

效果如下

在这里插入图片描述

文字竖排显示

通过设置TabStripPlacement得到的纵向TabItem并不美观,尤其是抽屉较少的情况下,左下角有大量的空白,如果能够想办法让文字纵向显示,就十分完美。直接在文字中加入\n并不能实现这一功能,为此,需要修改TabItem的HeaderTemplate,具体方法是,添加一个Resources,并在其中以TabItem为目标新建一个Style。

通过为TabItem中的文本区域添加一个Convert,从而实现标题文字的竖排显示

<TabControl.Resources><local:TabItemConverter x:Key="TabItemConverter"/><Style x:Key="TabItemVerticalStyle" TargetType="TabItem"><Setter Property="HeaderTemplate"><Setter.Value><DataTemplate><TextBlock Text="{Binding Path=Header,RelativeSource={RelativeSource AncestorType=TabItem},Converter={StaticResource TabItemConverter}}"></TextBlock></DataTemplate></Setter.Value></Setter></Style>
</TabControl.Resources>

其中,local是本地命名空间,在本例中,是tabTest

<Window x:Class="tabTest.MainWindow"xmlns:local="clr-namespace:tabTest"Title="MainWindow" Height="200" Width="360">

而TabItemConverter,则是手动实现的文字转换类,这个类通过继承IValueConverter接口来实现,后者内部封装了两个方法,分别是Convert和ConvertBack,只需实现前一个方法即可,修改结果如下

public class TabItemConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){string str = value.ToString();return string.Join("\n", str.Select(s => s));}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotImplementedException();}
}

效果如下

在这里插入图片描述


http://www.ppmy.cn/news/1255344.html

相关文章

初识Linux:保姆级教学,让你一秒记住Linux中的常用指令!

文章目录 前言一、LInux的背景及发展史二、Linux下的基本指令1、ls指令2、pwd指令3、cd指令4、touch指令5、mkdir指令&#xff08;重要&#xff09;6、tree指令7、rmdir指令和rm指令&#xff08;重要&#xff09;8、man指令&#xff08;重要&#xff09;9、cp指令&#xff08;重…

Django rest froamwork-ModelSerializer

文章目录 1 检查ModelSerializer2 指定要包含的字段3 指定嵌套序列化4 显式指定字段5 指定只读字段6 其他关键字参数7 关系字段8 自定义字段映射.serializer_field_mapping.serializer_related_fieldserializer_url_field.serializer_choice_field 通常&#xff0c;您会想要与D…

构建第一个ArkTS应用(纯HarmonyOS应用)

1. 安装开发工具 在华为开发者官方上下载HarmonyOS应用专用的开发工具&#xff0c;链接地址&#xff1a;HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 要想使用开发工具让项目跑起来&#xff0c;需要10G的磁盘空间。开发工具需要的磁盘空间为2.36G&#xff1b;SDK需…

第7章-使用统计方法进行变量有效性测试-7.5-逻辑回归

目录 购房的启发 初建模型 多元逻辑回归模型 模型参数估计 极大似然估计

9. 双向队列

在队列中&#xff0c;我们仅能删除头部元素或在尾部添加元素。如下图所示&#xff0c;双向队列(double-ended queue)提供了更高的灵活性&#xff0c;允许在头部和尾部执行元素的添加或删除操作。 9.1 双向队列常用操作 双向队列的常用操作如下表所示&#xff0c;具体的方法名称…

JavaSE学习路线及经验所谈

前言 一.学习框架二.学习经验 相信很多小白刚开始学习Java时&#xff0c;都是靠自己在网上搜集资料&#xff0c;并没有明确规划&#xff0c;不知道要学习什么内容&#xff0c;也不知道学习的重点是什么&#xff0c;那么这篇文章会给你一个大致的指引&#xff0c;当然也可以作为…

根据豆瓣对《流浪地球》的短评数据进行文本分析和挖掘

1背景 2019年2月5日电影《流浪地球》正式在中国内地上映。该电影在举行首映的时候&#xff0c;口德好得出奇&#xff0c;所有去看片的业界大咖都发出了画样赞叹&#xff0c;文化学者能锦说:“中国科幻电影元年开启了。"导演徐峰则说&#xff0c;“里程碑式的电影&#xf…

【车载开发系列】Flash支持的安全功能

【车载开发系列】Flash支持的安全功能 这里写目录标题 【车载开发系列】Flash支持的安全功能一. FlashMemory概念二. Flash Memory特性1&#xff09;包括代码闪存和数据闪存2&#xff09;闪存编程方法3&#xff09;支持BGO(后台地面操作)4&#xff09;闪存数据安全5&#xff09…