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

C# WPF编程-TabControl

C# WPF编程-TabControl

  • 布局:
  • 代码:
  • 效果

WPF中的TabControl是一个非常灵活和强大的控件,用于在一组页面或选项卡之间进行导航。每个选项卡(TabItem)可以包含任意复杂的UI内容。接下来,我将介绍如何使用TabControl,包括基本用法、样式定制以及如何实现垂直标签布局。

  • TabControl : 添加选项卡控件
  • TabItem:添加选项卡页面

布局:

<Window x:Class="WpfBaseDemo.WindowTabctrolDemo"
        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:WpfBaseDemo"
        mc:Ignorable="d"
        Title="WindowTabctrolDemo" Height="450" Width="800">

    <Window.Resources>
        <Style x:Key="TabItemHeaderTextStyle">
            <Setter Property="TextBlock.FontSize" Value="15"/>
            <Setter Property="TextBlock.FontStyle" Value="Italic"/>
            <Setter Property="TextBlock.FontWeight" Value="Bold"/>
            <Setter Property="TextBlock.Foreground" Value="#FF00479D"/>
        </Style>
    </Window.Resources>
    
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        
        <TabControl Grid.Row="0" Grid.Column="0" SelectionChanged="TabControl_SelectionChanged">
            <TabItem Header="第一页">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>
                    
                    <!-- 日历 -->
                    <Calendar Grid.Row="0" Grid.Column="0"/>
                    <Slider Grid.Row="0" Grid.Column="1" Value="50" Maximum="100"/>
                </Grid>
            </TabItem>

            <TabItem Header="第二页">
                
            </TabItem>

            <TabItem Header="第三页">
                
            </TabItem>
        </TabControl>
        

        <TabControl Grid.Row="0" Grid.Column="1" >
            <TabItem>
                <TabItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="Images/mail-send.png"/>
                        <TextBlock Text="第一页" Style="{StaticResource TabItemHeaderTextStyle}"/>
                    </StackPanel>
                </TabItem.Header>
                
            </TabItem>
            <TabItem>
                <TabItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="Images/help-contents.png"/>
                        <Label Content="第二页" Style="{StaticResource TabItemHeaderTextStyle}"/>
                    </StackPanel>
                </TabItem.Header>
                
            </TabItem>
            <TabItem>
                <TabItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="Images/stock_text_center.png"/>
                        <Label Content="第三页" Style="{StaticResource TabItemHeaderTextStyle}" />
                    </StackPanel>
                </TabItem.Header>
                <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
                    <Rectangle Width="200" Height="200">
                        <Rectangle.Fill>
                            <SolidColorBrush Color="Gold"/>
                        </Rectangle.Fill>
                    </Rectangle>
                </StackPanel>
            </TabItem>
        </TabControl>
    </Grid>
</Window>

代码:

using System;
using System.Collections.Generic;
using System.Diagnostics;
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.Shapes;

namespace WpfBaseDemo
{
    /// <summary>
    /// WindowTabctrolDemo.xaml 的交互逻辑
    /// </summary>
    public partial class WindowTabctrolDemo : Window
    {
        public WindowTabctrolDemo()
        {
            InitializeComponent();
        }

        private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            TabControl? tabControl = sender as TabControl;
            if (tabControl != null) {
                switch (tabControl.SelectedIndex)
                {
                    case 0:
                        Debug.WriteLine("第一页");
                        break;
                    case 1:
                        Debug.WriteLine("第二页");
                        break;
                    case 2:
                        Debug.WriteLine("第三页");
                        break;
                    default:
                        break;
                }                
            }           
        }
    }
}

效果

在这里插入图片描述

相关文章:

  • 【Linux网络】手动部署并测试内网穿透
  • AWS AI中几个重要的工具介绍
  • CA 机构如何防止中间人攻击
  • leecode463.岛屿的周长
  • Java利用POI+JFreeChart 实现excel导出数据和图标(折线统计图)
  • Kafka Snappy 压缩异常分析与解决方案
  • C++编译汇编八股总结
  • redis的典型应用 --缓存
  • Spring Boot 与 MyBatis Plus 整合 KWDB 实现 JDBC 数据访问
  • Bitcoin Thunderbolt 内测通道开启,加速比特币交易新时代
  • C++ 语法之数组指针
  • MyBatis 面试专题
  • ruoyi-vue部署linux(war包方式)
  • 鸿蒙app 中 web app和h5的通信
  • 麒麟操作系统安装人大金仓数据库
  • 解释下Cumulative Layout Shift (CLS)以及如何优化?
  • 数据库:一文掌握 Oracle 的各种指令(Oracle指令备忘)
  • 唯品会商品详情页架构设计与实现:高并发场景下的技术实践‌
  • 以mysql 为例,增删改查语法及其他高级特性
  • 3.21-1自动化框架
  • 湃书单|澎湃新闻编辑们在读的14本书:后工作时代
  • 《歌手2025》公布首发阵容,第一期就要淘汰一人
  • 最新研究:新型合成小分子可“精准杀伤”癌细胞
  • 秦洪看盘|交易新逻辑,银行股成A股稳定器
  • 西王食品连亏三年:主业齐“崩”,研发人员多为专科生
  • 美股全线收涨:道指涨逾千点,纳斯达克中国金龙指数涨5.4%