Infragistics 20.1 winToolBarManager 部分干货 持续累加

这种样式类似于Office的Ribbon。不知道Ribbon的,可以自行百度。

相当于Word中的文件菜单,这一区域统称为File,即文件菜单,即使并不作为文件菜单使用。

在不同的Style有不同的风格,简单说,2013,倾向于文件菜单铺满整个左侧。而2010或更早样式,则倾向根据菜单内容自动调整。关于左侧菜单中的文件历史记录。需要通过代码进行记录或者完成,控件本身不给记录此内容。做一个Group,然后插入按钮,大概这样的原理。

如图。左侧XX称为File,ribbon即为ribbon,每个ribbon中均可以自由添加Group,Group内有按钮或其他样式的触发点。

this.ultraToolbarsManager1.Ribbon.Tabs.Clear();//清空Tab页
this.ultraToolbarsManager1.Ribbon.ApplicationMenu2010.NavigationMenu.Tools.Clear();//清除文件菜单

文件菜单使用2010或2013样式时,需要使用ApplicationMenu2010属性方可产生效果。

this.ultraToolbarsManager1.Ribbon.FileMenuButtonCaption = "系统"; 设置文件菜单的名称。

 

 RibbonGroup groupItem = new RibbonGroup(info2.Label); 新建一个Ribbon组
                                    groupItem.Key = "group" + info2.Key;这个新建组需要有一个唯一标识的东西,叫做Key,String类型
                                    this.ultraToolbarsManager1.Ribbon.Tabs[info.Key].Groups.Add(groupItem);添加这个新的组
                                    ButtonTool buttonTool = new ButtonTool(info2.Key);添加一个按钮,同样需要唯一Key。

buttonTool.SharedProps.DisplayStyle = ToolDisplayStyle.Default; 设置部分属性
                                        this.ultraToolbarsManager1.Tools.Add(buttonTool);控件添加这个工具。

这个控件特殊地方在于,当你想给这个分组中添加按钮或控件时。是先统一添加到这个控件中,然后用Key做绑定,并不是直接添加到此按钮上。

比如Toolbars本身有一个RibbonGroup的List,和一个buttonTool的List。每次你添加按钮时,其实是先添加到ultraToolbarsManager1.Tools,Group同理,然后在对应的Group中,利用属性添加这个button,怎么找到对应的Button呢?利用Key

groupItem.Tools.AddTool(buttonTool.Key, false); 在这个Group中,添加这个按钮,Key是不可重复的唯一标志,所以。能对应。

File(文件)菜单中添加按钮需要用如下代码。如果不是2010或2013样式,则使用ApplicationMenu尝试。

this.ultraToolbarsManager1.Ribbon.ApplicationMenu2010.NavigationMenu.Tools.AddTool(buttonTool.Key);

顺序:新建Group或者Button 然后分别绑定(add)到toolbarsManager中,绑定完成后,再做对应的关联关系。

  this.ultraToolbarsManager1.Tools.Add(buttonTool);
  groupItem.Tools.AddTool(buttonTool.Key, false);

添加关联(绑定)时,控件会从它的Tools中找到对应Key 的按钮然后做关联。所以要先添加后绑定。

设定按钮属性,也有以下方法。

Infragistics.Win.Appearance apperbutton = new Infragistics.Win.Appearance();
                     
                                    buttonTool.SharedProps.Caption = info2.Label;
                                    buttonTool.SharedProps.AppearancesSmall.AppearanceOnRibbonGroup = apperbutton;
                                    buttonTool.SharedProps.AppearancesLarge.AppearanceOnRibbonGroup = apperbutton;
                                    buttonTool.SharedProps.DisplayStyle = ToolDisplayStyle.ImageAndText;

可以利用Appearance进行整体处理。

按钮存在最大最小的情况,而这个控件是分别采用两组属性来对应。所以为AppearancesSmall、和AppearancesLarge

添加Tab页

RibbonTab ribbGroup = new RibbonTab(info.Label);
                            ribbGroup.Key = info.Key;
                            this.ultraToolbarsManager1.Ribbon.Tabs.Add(ribbGroup);

Tab中添加分组

 this.ultraToolbarsManager1.Ribbon.Tabs[info.Key].Groups.Add(groupItem);

同样利用Key做关联。

 

以上是用代码动态添加按钮或者组或Tab页。

控件在初始化的时候我做了清空。然后动态处理。

也可以直接在画面写死相关按钮。

当你需要删除ultraToolbarsManager1的按钮时。需要在设计画面,控件上右击Customize,并在里面进行删除按钮。在画面上直接选中按钮利用Delete删除是无效的。

 

关于

SharedProps和InstanceProps

每个工具都有两个重要的属性,这些属性与其作为“根工具”或“实例工具”的状态有关。它们称为 SharedProps 和 InstanceProps

每个工具上的SharedProps属性返回SharedProps对象,该对象包含在工具的所有实例之间共享的属性。因此,根工具的SharedProps属性及其所有相关实例工具的SharedProps属性将返回相同的SharedProps对象。SharedProps对象包含诸如外观,标题和类别的属性。

每个工具上的InstanceProps属性返回InstanceProps对象,该对象包含仅影响它们所连接的工具实例的属性。

 
注意

因为InstanceProps对象仅包含对Instance Tools具有意义的属性,所以Root Tool的InstanceProps属性返回null。

InstanceProps对象包含诸如外观,标题和可见性之类的属性。

在SharedProps和InstanceProps对象上,某些属性(如Appearance和Caption)均重复。对于同时出现在SharedProps和InstanceProps上的属性,SharedProps版本用作该属性的“全局”设置,影响所有相关的工具实例,而InstanceProps版本仅影响其所连接的实例。这为开发人员提供了设置此类工具属性的极大灵活性。例如,可以使用其SharedProps.Appearance属性设置工具的外观,这样做会影响该工具的所有实例。如果您随后希望该工具的特定实例以不同的方式显示,则可以更改该工具实例的InstanceProps.Appearance属性。

SharedProps和InstanceProps对象使您能够在工具的所有实例之间全局应用设置,并可以灵活地覆盖特定工具实例的所选设置。

隐藏上方快速启动栏

改为False即可。

当隐藏QuickAccessToolBar的时候,2010样式的文件菜单的返回按钮会被遮挡。目前没找到好的办法,只能把快速启动栏放出来。我正在官方论坛提问,后续更新进展。

 

InstanceProps 为空?

获取不到InstanceProps?

按官方的的解释。InstanceProps 和 SharedProps 分别为根工具和实例工具。 根工具倾向于负责创建即将出现的工具样式,比如New 一个Button 的时候。而InstanceProps  则是在这个工具实例化以后,对其外观或属性进行处理。

 

SharedProps对象上可以找到适用于根工具和该工具所有实例的属性,可通过该工具的SharedProps属性对其进行访问。顾名思义,SharedProps对象的属性在该工具的所有实例之间共享。对这些属性之一进行更改将影响根工具和该工具的所有其他实例。

InstanceProps对象上找到仅影响该工具的单个实例的属性,可通过该工具的InstanceProps属性访问该属性。尽管根工具具有InstanceProps属性,但此属性返回Null,因为没有与根工具关联的实例属性。

 

简单说,你通过代码所创建的按钮,均是继承自buttonTool,即new 了一个ButtonTool,此时的InstanceProps是没有的,因为它指的是整个ButtonTool类,不是当前的按钮。

 

 this.ultraToolbarsManager1.Ribbon.Tabs[info.Key].Groups[groupItem.Key].Tools[buttonTool.Key].InstanceProps.IsFirstInGroup = true;

this.ultraToolbarsManager1.Ribbon.Tabs[info.Key].Groups[groupItem.Key].Tools[buttonTool.Key].InstanceProps.MinimumSizeOnRibbon = RibbonToolSize.Large;具有在此控件中的实体位置(实例位置),所以具有实例属性InstanceProps

创建完按钮后,根据其所在位置,进行逐层寻找,找到后,其InstanceProps是可以直接使用的。不会报错。

IsFirstInGroup 属性需要打开!!!

概念需要实际操作才能理解。不过另有简单方法,首先在画面上拖一个控件,新建组、新建按钮,直接右键设置其属性。比如,Large,然后在Designer文件中查找Large。确实是有的,并且生效了。

因为你通过画面交互,创建了一个实体的按钮,有具体位置,独立于ButtonTool。

另,关于文件菜单显示不全的问题,当隐藏上方快捷栏或者缩小上下宽度时。2013样式下,点击系统菜单,里面部分选项的文本会被切割掉,隐藏掉一部分,总之不显示了。问了官方。官方说他们注意到了这个问题,但是,不了了之。。。。。。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值