首页 > 其他分享 >控件与布局

控件与布局

时间:2024-08-24 18:37:07浏览次数:4  
标签:控件 Canvas 布局 内容 new 容纳

1.控件的分类:主要要6大类

  一.布局控件:可以容纳多个控件或者嵌套其他布局控件,用于在UI上组织和排列控件。Grid、StackPanel、DockPanel等都属于此类,他们拥有共同的父类Panel

 二.内容控件:只能容纳一个其他控件或者布局控件作为他的内容。Window、Button等都属于此类,因为只能容纳一个控件做为内容,所以经常借助布局控件来规划其内容,他们共同的父类ContenControl;

 三.带标题内容控件:相当于一个内容控件,但是可以加一个标题,标题部分亦可容纳一个控件或布局。GropBox、TabItem等都属于此类,他们共同的父类是HeaderedContentControl.

 四.条目控件:可以显示一列数据,一般情况下这列数据的类型相同。此类控件包括ListBox、ComboBox等,他们共同的基类是ItemsControl;

 五.带标题条目控件:相当于一个条目控件加上一个标题显示区。TreeViewItem、MenuItem都属于此类,他们共同的基类是HeaderedItemControl;

 六:特殊内容控件:比如TextBox容纳的是字符串、TextBlock可以容纳可自由控制格式的文本、Image容纳图片类型数据;

派生如下:

 

2.ContendControl族:只能由单一元素充当其内容

例如Button,当中只能有一个元素

 <StackPanel>
        <Button Margin="5">
            <TextBox Text="Hello"/>
        </Button>
    </StackPanel>

3.HeaderedContentControl族:除了用于显示主体内容外,还具有一个显示标题的区域

 <Grid>
        <GroupBox Margin="10" BorderBrush="Gray">
            <GroupBox.Header>
                <TextBox Text="header"/>
            </GroupBox.Header>
            <TextBlock TextWrapping="WrapWithOverflow" Margin="10" Text= "nihao"/>
        </GroupBox>
    </Grid>

4.ItemsControl族:用于显示列表化的数据

控件作为元素如下:

 <Grid>
        <ListBox Margin="5">
            <CheckBox x:Name="checkBoxTim" Content="Tim"/>
            <CheckBox x:Name="checkBoxTom" Content="Tom"/>
            <CheckBox x:Name="checkBoxBruce" Content="Bruce"/>
            <Button x:Name="ButtonMess" Content="Mess"/>
            <Button x:Name="buttonOwen" Content="Owen"/>
            <Button x:Name="buttonVictor" Content="Victor"/>
        </ListBox>
    </Grid>

数据作为元素如下:

 /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public static string WindowTitle = "山高月小";
        public static string ShowText { get { return "水落石出"; } }

        List<Employee> empList = new List<Employee>()
        {
            new Employee(){Id = 1,Name = "Time",Age = 30},
            new Employee(){Id = 2,Name = "Tom",Age = 26},
            new Employee(){Id = 3,Name = "Guo",Age = 39},
        };
        public MainWindow()
        {
            InitializeComponent();
            this.listBoxEmplyee.DisplayMemberPath = "Name";
            this.listBoxEmplyee.SelectedValuePath = "Id";
            this.listBoxEmplyee.ItemsSource = empList;
        }
    }

 5.TextBlock和TextBox:TextBlock只能显示文本,不能编辑,所以又称静态文本。TextBox则允许用户编辑其中的内容

6.Panel族: Grid(网格) StackPanel(栈式面板)  Canvas(画布)  DockPanel(泊靠式面板)  WrapPanel(自行折行面板)

一.Grid.使用绝对值的行高不会改变而使用比例值的行高会保持固有比例。而且,行高和列宽的默认形式就是比例值,所以如果没有显式指定行高或列宽时,默认值就是1*,

      1*又可以简写为*

二.StackPanel:把内部元素在纵向或横向上紧凑排列、形成栈式布局

三.Canvas:当控件被放置到Canvas里时就会被附加上Canvas.X和Canvas.Y属性。

 <Canvas>
        <TextBlock Text="用户名:" Canvas.Left="12" Canvas.Top="12"/>
        <TextBox Height="23" Width="200" BorderBrush="Black" Canvas.Left="66" Canvas.Top="9"/>
        <TextBlock Text="密码" Canvas.Left="12" Canvas.Top="40.72" Height="16" Width="36"/>
        <TextBox Height="23" Width="200" BorderBrush="Black" Canvas.Left="66" Canvas.Top="38"/>
        <Button Content="确定" Width="80" Height="22" Canvas.Left="100" Canvas.Top="68"/>
        <Button Content="清除" Width="80" Height="22" Canvas.Left="186" Canvas.Top="67"/>
    </Canvas>

四.DockPanel:其中的元素会被附加上DockPanel.Dock这个属性,这个属性的数据类型为枚举,枚举值可取Left\Top\Right\Botton四个值,根据值,会向指定方向累计

<Grid>
        <DockPanel>
            <TextBox DockPanel.Dock="Top" Height="25" BorderBrush="Black"/>
            <TextBox DockPanel.Dock="Left" Width="150" BorderBrush="Black"/>
            <TextBox BorderBrush="Black"/>
        </DockPanel>
    </Grid>

五.WrapPanel:采用的时流式布局。使用Orientation属性控制流延伸的方向,使用HorizontalAlignment 和VerticalAlignment属性控制内部控件的对齐;

 <WrapPanel Orientation="Vertical">
        <Button Width="50" Height="50" Content="OK"/>
        <Button Width="50" Height="50" Content="OK"/>
        <Button Width="50" Height="50" Content="OK"/>
    </WrapPanel>

 

标签:控件,Canvas,布局,内容,new,容纳
From: https://www.cnblogs.com/guoxu486/p/18374624

相关文章

  • 黑神话:悟空四年前就布局商标,多个名称申请全类!
         近日黑神话:悟空上线,预售超4亿元,普推知产商标老杨经检索发现,背后的主体游科互动早在三年前就布局商标,申请了多个核心名称的45类全类的商标。背后的游科互动名下申请了245件商标,其“黑悟空”是2021年申请,“黑神话悟空“和”黑神话”更是2020年申请,而且这三个......
  • 如何在 Nuxt 中动态设置页面布局
    title:如何在Nuxt中动态设置页面布局date:2024/8/24updated:2024/8/24author:cmdragonexcerpt:摘要:本文介绍如何在Nuxt框架中通过设置setPageLayout函数动态调整页面布局,包括安装Nuxt、创建不同布局文件及中间件,并通过示例演示如何根据不同路径设置相应布局。categ......
  • 网络直播平台搭建,瀑布流布局完美解决方案
    网络直播平台搭建,瀑布流布局完美解决方案使用教程直接复制代码列表布局数据自己写<template><viewclass="waterfall-wrap"><viewclass="waterfall-list"><viewclass="left"><hd-list:listData="it......
  • 栅格布局在 HarmonyOS 中的应用及扩展
    栅格布局作为一种经典的布局方式,广泛应用于不同类型的用户界面设计,尤其是在移动设备和响应式设计中,它表现出了强大的适应性。本文将深入探讨如何在HarmonyOS中使用栅格布局组件GridRow和GridCol,并通过多种示例来展示栅格布局的灵活性及扩展性。栅格布局的核心优势1.......
  • CSS3页面布局-三栏-固定宽度布局
    布局的基本概念多栏布局三种基本实现方案:固定宽度,流动,弹性。固定宽度布局:大小不会随用户调整浏览器窗口大小。一版960-1100,960常见,可以被3,4,5,6,8,10,12,16整除。流动布局:大小会随用户调整浏览器窗口大小而变化。可以更好适应大屏幕,也叫响应式。弹性布局:所有元素大小也......
  • 分享一个基于ChatGPT实现基于Convars布局思路的实现过程
    一、思路在AI的大背景,应用层算法已经不是问题,那么程序员的差距主要在认知思维模式和创新上面。目前AI的局限主要却决于沟通的效率,这是双方的问题,AI可能理解能力不足,或者提问者表达能力不足。这里我以PDFsharp实现Grid布局模式分享一下基于GPT实现的过程。因为PDFsharp只提供了XG......
  • 海康威视WEBSDK3.3控件开发-分屏预览多个摄像头
    海康威视WEB3.3控件开发包V3.3下载得到海康威视的demo。按照说明文档启动项目。如果是公司内部,一般都是配置好了对应的WiFi,不需要启动NGINX,直接启动.html文件即可海康威视视频教程注意:很多需要海康平台支持,需要付费参考:在vue3中使用海康威视WEB3.3控件开发包V3.......
  • Qt键盘事件检测不到方向键|阻止控件截取键盘事件
    做项目二次开发的时候遇到一个问题,在自己新建的界面中放了很多控件,需要通过键盘方向键来控制焦点在不同控件间的转移,之前用键盘事件检测上下键没有问题,后来加上左右键发现没有反应,查了资料了解到是控件吞掉了左右方向键的信号,因为Qt中本身就有一些处理事件的函数,控件会获取键盘左......
  • lazarus 3.4+fpc trunk编译tachart控件出错
    lazarus3.4+fpctrunk编译tachart控件出错原因:最新的fpc禁止访问private引起的修改方法:1、打开lazarus\components\tachart\tadatatools.pas将functionTDataPointDistanceTool.FindRef(APoint:TPoint;AMode:TDataPointMode;ADest:TDataPointTool.TPointRef;AOtherEndS......
  • 【python】PyQt5中的QFrame控件,控制图形的边框样式、阴影效果、形状等属性
    ✨✨欢迎大家来到景天科技苑✨✨......