Ribbon布局和尺寸调整

news2024/9/24 23:23:56

Ribbon布局和尺寸调整
在本文中
Ribbon大小调整概述
默认大小调整行为
指定自定义调整大小行为
控件级调整
 

        Ribbon使用自适应布局和调整大小来呈现各种窗口大小的最佳控件布局。Ribbon提供默认的大小调整行为,适用于许多常见场景。WPF的Microsoft Ribbon还提供了一组选项,可用于指定自定义调整大小的行为。

尺寸调整概述

        Ribbon控件会随着应用程序窗口宽度的变化而动态调整大小。下面的插图显示了当应用程序窗口变窄时,Ribbon如何调整大小。

        当窗口有足够的可用空间时,选项卡中的每个组将以其最大指定大小显示。

        当窗口变窄时,剪贴板和插入组将以较小的尺寸显示。

        当窗口进一步缩小时,剪贴板、插入和段落组将显示为折叠状态。当组折叠成下拉按钮时,打开下拉按钮时将显示其最大大小变化。

默认大小调整行为

        默认情况下,布局Ribbon的面板使用星形大小来显示可容纳在可用空间中的最大可能的控件变化。随着窗口宽度的变化,控件组将从右到左循环调整大小。在从右向左布局的局部区域性中,控件组从左到右循环调整大小。

        星型大小是一种惯例,即可用空间在需要占用空间的元素之间平均分配。该名称源于在XAML中使用星号(*)指定星型大小的事实。

        当没有空间限制时,每个组以最大尺寸显示其所有控件。当窗口缩小时,每个组调整其控件的大小以显示较小的变化。当没有足够的空间来显示每个组的最小控制变量时,组将折叠成下拉按钮。

指定自定义调整大小行为

        对于复杂的Ribbon布局,通常需要精确指定Ribbon如何随窗口调整大小。可以在控件级别、组级别或选项卡级别指定调整大小的行为。如果未在特定级别指定自定义调整大小设置,则使用默认行为。

        下表列出了如何在不同级别上指定自定义调整大小设置。

级别如何指定自定义调整大小

RibbonControl

设置ControlSizeDefinition属性以指定要显示的控件的大小。

RibbonGroup

设置GroupSizeDefinitions属性以指定调整大小时使用的控件大小的各种可能组合。

RibbonTab

设置GroupSizeReductionOrder属性以指定调整色带组大小的顺序。

 

控件级调整

        Ribbon指定了色带控件的三种标准尺寸变化;大号、中号和小号。每个控件都有一个ControlSizeDefinition属性,该属性被设置为一个RibbonControlSizeDefinition对象。RibbonControlSizeDefinition对象有一个ImageSize属性,它指定是显示大图像还是小图像,还有一个IsLabelVisible属性,它指定控件的标签是否可见。

        下表显示了三个标准控件大小的RibbonControlSizeDefinition属性设置。

大小

说明

ImageSize

IsLabelVisible

Large

具有较大的图像和最多两行的标签。

RibbonImageSize.Large

true

Medium

有一个小图像和一行作为标签。

RibbonImageSize.Small

true

Small

只有一个小图像,没有标签。

RibbonImageSize.Small

false

下面的例子显示了三个RibbonControlSizeDefinition声明,分别对应于大、中、小控件。

XAMLCopy

<ribbon:RibbonControlSizeDefinition ImageSize="Large" IsLabelVisible="True" />
<ribbon:RibbonControlSizeDefinition ImageSize="Small" IsLabelVisible="True" />
<ribbon:RibbonControlSizeDefinition ImageSize="Small" IsLabelVisible="False" />
对照组

        相关的ribbon控件可以在一个RibbonControlGroup中组合在一起。当一个控制组被调整大小时,一个RibbonControlSizeDefinition应用于RibbonControlGroup中的所有控件。RibbonControlGroup位于RibbonGroup中,就好像它是一个控件一样。

组级别调整

        当ribbon被调整大小时,选项卡中的组可以通过使用RibbonGroupItemsPanel的内置逻辑、用户指定的调整大小逻辑或两者的组合来调整大小。默认情况下,RibbonGroupItemsPanel会调整组中的控件大小,以显示适合可用空间的最大控件变化。如果指定,则使用GroupSizeReductionOrder(指定调整组大小的顺序)和RibbonGroup的组合来调整选项卡中的组的大小。属性,该属性指定组的各种可能的大小配置。

下面的示例显示了前面显示的剪贴板组的GroupSizeDefinitions。

Copy

<ribbon:RibbonGroup.GroupSizeDefinitions>
  <ribbon:RibbonGroupSizeDefinition>
    <ribbon:RibbonControlSizeDefinition ImageSize="Large" IsLabelVisible="True" />
    <ribbon:RibbonControlSizeDefinition ImageSize="Small" IsLabelVisible="True" />
    <ribbon:RibbonControlSizeDefinition ImageSize="Small" IsLabelVisible="True" />
  </ribbon:RibbonGroupSizeDefinition>
  <ribbon:RibbonGroupSizeDefinition>
    <ribbon:RibbonControlSizeDefinition ImageSize="Large" IsLabelVisible="True" />
    <ribbon:RibbonControlSizeDefinition ImageSize="Small" IsLabelVisible="False" />
    <ribbon:RibbonControlSizeDefinition ImageSize="Small" IsLabelVisible="False" />
  </ribbon:RibbonGroupSizeDefinition>
  <ribbon:RibbonGroupSizeDefinition IsCollapsed="True" />
</ribbon:RibbonGroup.GroupSizeDefinitions>

        GroupSizeDefinitions属性包含一个RibbonGroupSizeDefinition对象的集合,每个对象都为组指定了一种可能的配置。当调整ribbon的大小时,ItemsPanel决定使用哪个RibbonGroupSizeDefinition,以便将所有控件放入可用空间中。然后,它根据所选RibbonGroupSizeDefinition中的RibbonControlSizeDefinition对象指定的控件大小。控件大小定义按顺序应用于组中的控件。

        Ribbon指导说明指出,每个组应该指定至少两个预定义的大小变量:大变量和小变量。当RibbonGroup无法再将控件放入可用大小时,该组将折叠为下拉列表。折叠组时,打开下拉菜单时将显示指定的最大变体。在前面显示的第三个插图中,剪贴板组被折叠,其最大的变体在下拉框中显示。

        将iscollapse属性设置为true,以指定应该将组的大小调整为可折叠的下拉框。因为打开折叠组时总是显示最大的变量,所以在设置iscollapse属性时不需要指定RibbonControlSizeDefinition对象的集合。如果指定了一个RibbonControlSizeDefinition集合,iscollapse属性将被忽略。

        示例中的GroupSizeDefinitions在前面显示的插图中进行了演示。

  • 在前面显示的第一个示例中,第一个RibbonGroupSizeDefinition应用于剪贴板组。三个RibbonControlSizeDefinition对象按顺序应用于三个按钮,并指定按钮大小为large、medium和medium。
  • 在第二个示例中,窗口的可用空间较少,因此第二个RibbonGroupSizeDefinition应用于剪贴板组。RibbonControlSizeDefinition对象指定按钮大小为大、小和小。
  • 在第三个示例中,应用了最后一个RibbonGroupSizeDefinition。此选项指定折叠组,而不是指定控件的大小。
使用自定义ItemsPanel调整组级大小

        如果您不能使用默认的调整大小或指定GroupSizeDefinitions来实现所需的布局,您可以用自定义面板替换默认的ItemsPanel。例如,前面显示的字体组包含几组按钮,每组都包含在一个RibbonControlGroup中。如前所述,RibbonControlGroup位于RibbonGroup中,就好像它是单个控件一样。因此,使用默认面板时,字体组不能以有用的方式调整大小。为了实现所示的布局,默认的RibbonGroupItemsPanel被替换为标准的WrapPanel。

        下面的例子展示了如何使用WrapPanel作为丝带组的ItemsPanel。

Copy

<ribbon:RibbonGroup Header="Font" Name="Font" SmallImageSource="Images\FontColor16.png">
  <ribbon:RibbonGroup.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel Orientation="Horizontal" MaxWidth="300" />
    </ItemsPanelTemplate>
  </ribbon:RibbonGroup.ItemsPanel>
…
<!-- Ribbon Group Content -->
…
</ribbon:RibbonGroup>
Tab-Level调整

        要指定制表符级别的调整大小,可以设置RibbonTab。GroupSizeReductionOrder指定组更改大小的顺序。要指定GroupSizeReductionOrder,每个RibbonGroup必须将其Name属性设置为唯一的值。通过将组名添加到缩减顺序列表中来指定缩减顺序。

        下面的示例显示了如何为前面插图中显示的Home选项卡设置GroupSizeReductionOrder。

XAMLCopy

<ribbon:RibbonTab Header="Home" 
    GroupSizeReductionOrder="Clipboard, Insert, Insert, Paragraph, Clipboard, Editing, Font, Clipboard" >
    <ribbon:RibbonGroup Header="Clipboard" Name="Clipboard" SmallImageSource="Images/Paste16.png">
        ...  
    </ribbon:RibbonGroup>
    <ribbon:RibbonGroup Header="Font" Name="Font" SmallImageSource="Images\FontColor16.png">
        ...
    </ribbon:RibbonGroup>
    <ribbon:RibbonGroup Header="Paragraph" Name="Paragraph" SmallImageSource="Images/AlignLeft16.png">
        ...
    </ribbon:RibbonGroup>
    <ribbon:RibbonGroup Header="Insert" Name="Insert" SmallImageSource="Images/InsertPicture16.png">
        ...
    </ribbon:RibbonGroup>
    <ribbon:RibbonGroup Header="Editing" Name="Editing" SmallImageSource="Images/Find16.png">
        ...
    </ribbon:RibbonGroup>
</ribbon:RibbonTab>

        在第一个插图中,色带有足够的空间来使用其最大的变体来布局每个组。在第二张图中,随着窗口变小,在GroupSizeReductionOrder中指定的前两个组(Clipboard和Insert)以较小的变体显示。在第三张图中,“插入”组再次缩小,“段落”组再次缩小,“剪贴板”组再次缩小。

        RibbonTab默认的ItemsPanel是一个RibbonGroupsPanel。该面板负责根据默认或用户指定的大小减小顺序,确定选项卡中组的可用大小和布局。

        如果GroupSizeReductionOrder集合包含的名称没有出现在选项卡上的某个组上,那么该名称将被忽略。如果组名在集合中出现的次数多于该组的大小变量,则该组将调整大小为其最小的变量,并且忽略它在集合中出现的额外次数。如果GroupSizeReductionOrder集合中没有列出任何组,那么在所有用户指定的缩减完成后,这些组将按照从右到左、一个接一个的循环顺序进行缩减。这意味着默认情况下,如果在GroupSizeReductionOrder中没有指定任何内容,则每个组的大小将按循环顺序从右到左依次减少。这种大小调整在从右向左布局的局部区域性中是相反的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2161764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【可图(Kolors)部署与使用】大规模文本到图像生成模型部署与使用教程

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山冈&#xff01; &#x1f4ab; 欢迎来到我的学习笔记&#xff01; 1.Kolors 简介 1.1.什么是Kolors&#xff1f; 开发团队 Kolors 是由快手 Kolors 团队…

组合优化与凸优化 学习笔记4 凸优化问题

优化问题基本定义 假如f(x)是方圆R以内&#xff08;R只要大于0就行&#xff09;最好的一个解 等价问题 就是这种优化函数没啥区别&#xff08;乘了个系数&#xff09;&#xff0c;约束们也就多了个系数的情况&#xff0c;这和原本的显然一样。这是等价的最简单的例子。 归根结…

MES系统如何提升制造企业的运营效率和灵活性

参考拓展&#xff1a;苏州稳联-西门子MES系统-赋能智能制造的核心引擎 制造执行系统(MES)在提升制造企业运营效率和灵活性方面发挥着关键作用。 一、MES系统的基本概念和功能 MES系统是连接企业管理层与生产现场的重要桥梁。它主要负责生产调度、资源管理、质量控制等多个方…

【C++ 基础数学 】2121. 2615相同元素的间隔之和|1760

本文涉及的基础知识点 基础数学 LeetCode2121. 相同元素的间隔之和 难度分&#xff1a;1760 令2165&#xff0c;和此题几乎相等。 给你一个下标从 0 开始、由 n 个整数组成的数组 arr 。 arr 中两个元素的 间隔 定义为它们下标之间的 绝对差 。更正式地&#xff0c;arr[i] 和…

李宏毅2023机器学习HW15-Few-shot Classification

文章目录 LinkTask: Few-shot ClassificationBaselineSimple—transfer learningMedium — FO-MAMLStrong — MAML Link Kaggle Task: Few-shot Classification The Omniglot dataset background set: 30 alphabetsevaluation set: 20 alphabetsProblem setup: 5-way 1-sho…

9/24作业

1. 分文件编译 分什么要分文件编译&#xff1f; 防止主文件过大&#xff0c;不好修改&#xff0c;简化编译流程 1) 分那些文件 头文件&#xff1a;所有需要提前导入的库文件&#xff0c;函数声明 功能函数&#xff1a;所有功能函数的定义 主函数&#xff1a;main函数&…

请不要在TS中使用Function类型

在 TypeScript 中&#xff0c;避免使用 Function 作为类型。Function 代表的是“任意类型的函数”&#xff0c;这会带来类型安全问题。对于绝大多数情况&#xff0c;你可能更希望明确地指定函数的参数和返回值类型。 如果你确实想表达一个可以接收任意数量参数并返回任意类型的…

Kali wireshark抓包

wireshark 查看指定网卡进出流量 构造一个只能显示ICMP数据包的显示过滤器 ARP 同理&#xff0c;显示过滤器会屏蔽所有除了 ARP 请求和回复之外的数据包

力扣 中等 92.反转链表 II

文章目录 题目介绍题解 题目介绍 题解 class Solution {public ListNode reverseBetween(ListNode head, int left, int right) {// 创建一个哑节点&#xff0c;它的 next 指向头节点&#xff0c;方便处理ListNode dummy new ListNode(0, head);// p0 用于指向反转部分的前一个…

3. 轴指令(omron 机器自动化控制器)——>MC_MoveVelocity

机器自动化控制器——第三章 轴指令 6 MC_MoveVelocity变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启运动指令▶多重启动运动指令▶异常 动作示例▶动作示例▶梯形图▶结构文本(ST) MC_MoveVelocity 使用伺服驱动器的位置控制模式&#xff0c;进行…

聊一下cookie,session,token的区别

cookie cookie是存放在客户端的,主要用于会话管理和用户数据保存;cookie通过http报文的请求头部分发送给服务器,服务器根据cookie就可以获取到里面携带的session id(用于获取服务器中对应的session数据),因为http是无状态协议,我们通常就是通过cookie去维护状态的 cookie是在…

Kali 联网

VMware 中分三种网络模式 桥接模式&#xff1a;默认余宿主机 VMnet0 绑定&#xff0c;像一台独立机 NAT 模式&#xff1a;默认余宿主机 VMnet8 绑定&#xff0c;需要通过物理机连接外网 仅主机模式&#xff1a;默认余宿主机 VMnet1 绑定&#xff0c;只能与物理机通信 VMware…

Linux系统容器化部署中,构建Docker 镜像中包含关键指令和参数的文件dockerfile的详细介绍

目录 一、Dockerfile的用处 1、自动化构建 2、可重复性 3、可移植性 4、版本控制 5、优化镜像大小 6、便于分享和分发 二、Dockerfile 的基本结构 1、基础镜像&#xff08;FROM&#xff09; 2、维护者信息&#xff08;MAINTAINER/LABEL maintainer&#xff09; 3、设置工作目…

C++之STL—List 链表

双向链表 链表的组成&#xff1a;链表由一系列**结点**组成 结点的组成&#xff1a;一个是存储数据元素的**数据域**&#xff0c;另一个是存储下一个结点地址的**指针域** STL中的链表是一个双向循环链表 构造函数 List 赋值和交换 容器大小操作 - 判断是否为空 --- empty - …

深度学习实战:UNet模型的训练与测试详解

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 1、云实例&#xff1a;配置选型与启动1.1 登录注册1.2 配置 SSH 密钥对1.3 创建实例1.4 登录云实例 2、云存储&#xff1a;数据集上传…

JavaScript --json格式字符串和对象的转化

json字符串解析成对象 &#xff1a; var obj JSON.parse(str) 对象转化成字符串&#xff1a;var str1 JSON.stringify(obj1) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Com…

第五篇:Linux进程的相关知识总结(1)

目录 第四章&#xff1a;进程 4.1进程管理 4.1.1进程管理需要的学习目标 4.1.1.1了解进程的相关信息 4.1.1.2僵尸进程的概念和处理方法&#xff1a; 4.1.1.3PID、PPID的概念以及特性&#xff1a; 4.1.1.4进程状态 4.1.2进程管理PS 4.1.2.1静态查看进程 4.1.2.1.1自定义…

搭建EMQX MQTT服务器并接入Home Assistant和.NET程序

本文主要介绍如何使用Docker搭建EMQX MQTT服务器&#xff0c;并将其接入到Home Assistant中&#xff0c;最后演示如何使用.NET接入MQTT。 1. 背景 在智能家居系统中&#xff0c;MQTT&#xff08;消息队列遥测传输协议&#xff09;是一种轻量级的消息传输协议&#xff0c;特别适…

《深度学习》—— 神经网络中的数据增强

文章目录 一、为什么要进行数据增强&#xff1f;二、常见的数据增强方法1. 几何变换2. 颜色变换3. 尺寸变换4. 填充5. 噪声添加6. 组合变换 三、代码实现四、注意事项五、总结 一、为什么要进行数据增强&#xff1f; 神经网络中的数据增强是一种通过增加训练数据的多样性和数量…

动态规划11,完全背包模板

NC309 完全背包 问题一&#xff1a;求这个背包至多能装多大价值的物品&#xff1f; 状态表示&#xff1a;经验题目要求 dp[i][j] 表示 从前i个物品中挑选&#xff0c;总体积不超过j&#xff0c;所有选法中&#xff0c;能选出来的最大价值。 状态转移方程 根据最后一步的状态&a…