起初对于这些名词不懂,后经查阅了解如下,希望对学习者能有所帮助。在Revil里大部分命令在没有打开文档的时候是禁用的,有的在没有打开文档也是可以使用的。而又一些在平面视图是禁用的如标高,有的在3D视图里是禁用的 如标高和轴网,类似于在revit中对于某些组文件进行相应的标注他们的长宽高等,在二维三维中使用则不同,并且会受到限制。而这些是否可用我们是可以自己控制的。在PushButton的属性里有一个AvailabilityClassName属性,通过这个就可实现命令在什么时候可用,禁用的控制。

这个属性是个string,它需要设置为一个实现了IExternalCommandAvailability接口的类的全类名

比如这样一个命令,它实现了IExternalCommand,IExternalCommandAvailability这两个接口

public class ExternalCommandAvailability : IExternalCommand,IExternalCommandAvailability
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
TaskDialog.Show("test", "test ok");
return Result.Succeeded;
} public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
{
return true;
}
}

那在创建按钮的时候可以这样指定

application.CreateRibbonTab(tabName);
RibbonPanel panel = application.CreateRibbonPanel(tabName, panelName);
PushButtonData btnData=new PushButtonData("testcmd","cmd", this.GetType().Assembly.Location, "RevitApiTest.TestCommand"); PushButton btn =(PushButton)panel.AddItem(btnData); btn.AvailabilityClassName = "RevitApiTest.TestCommand";

如果在IsCommandAvailable里直接返回true,那这个命名就是任何时候都可以使用。

假设用户有一个命令需要在平面视图里禁用那可以如下实现

public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
{
UIDocument uidoc = applicationData.ActiveUIDocument;
if (uidoc.ActiveGraphicalView is ViewPlan)
return false; return true;
}

类名:IExternalCommandAvailability+IExternalCommand实现对某些控件的自定义使用的更多相关文章

  1. WPF 4 DataGrid 控件(自定义样式篇)

    原文:WPF 4 DataGrid 控件(自定义样式篇)      在<WPF 4 DataGrid 控件(基本功能篇)>中我们已经学习了DataGrid 的基本功能及使用方法.本篇将继续 ...

  2. WPF Calendar 日历控件 样式自定义

    原文:WPF Calendar 日历控件 样式自定义 粗略的在代码上做了些注释 blend 生成出来的模版 有的时候 会生成 跟 vs ui界面不兼容的代码 会导致可视化设计界面 报错崩溃掉 但是确不 ...

  3. Vue input 控件: 通过自定义指令(directive)使用正则表达式限制input控件的输入

    前言: 网站中的input输入框使用非常广泛,因业务场景不同需要对输入框做合法性校验或限制输入,比如电话号码.邮件.区号.身份证号等.input框的不合法内容主要有两种方式处理:1.用户输入内容后,通 ...

  4. Android学习笔记(九)——布局和控件的自定义

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! View是 Android中一种最基本的 UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件 ...

  5. 【转】C# 控件的自定义拖动、改变大小方法

    在用VS的窗体设计器时,我们可以发现控件都是可以拖动的,并且还可以调整大小.怎么在自己的程序中可以使用上述功能呢? 下面的方法值得借鉴! using System; using System.Wind ...

  6. C# 控件的自定义拖动、改变大小方法

    在用VS的窗体设计器时,我们可以发现控件都是可以拖动的,并且还可以调整大小.怎么在自己的程序中可以使用上述功能呢? 下面的方法值得借鉴! using System; using System.Wind ...

  7. WPF自定义控件与样式(10)-进度控件ProcessBar自定义样

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: Pro ...

  8. Flex 文本控件实现自定义复制粘贴

    由于添加了自定义右键菜单,导致Textinput控件默认的右键复制粘贴功能被屏蔽了.最后通过JS脚本实现这个功能,参考代码如下 <?xml version="1.0" enc ...

  9. UIButton图片文字控件位置自定义(图片居右文字居左、图片居中文字居中、图片居左文字消失等)

    在开发中经常会碰到需要对按钮中的图片文字位置做调整的需求.第一种方式是通过设置按钮中图片文字的偏移量.通过方法setTitleEdgeInsets和setImageEdgeInsets实现 代码如下: ...

随机推荐

  1. 页面布局 ——图片自动按比例显示&&图片随外部div的增大而按比例增大

    图片按比例显示,分为两种情况. 1.空的div内加图片 <div class="emty"><img src="img/my.png"> ...

  2. 20155219付颖卓《网络对抗》Exp6 信息搜集与漏洞扫描

    基础问题回答 1.哪些组织负责DNS,IP的管理? 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地址管理. 全球根域名服务器:绝大多数在欧洲和北美(全球13台 ...

  3. Spock - Document - 03 - Data Driven Testing

    Data Driven Testing Peter Niederwieser, The Spock Framework TeamVersion 1.1 Oftentimes, it is useful ...

  4. 使用maven整合spring+springmvc+mybatis

    使用maven整合spring+springmvc+mybatis 开发环境: 1. jdk1.8 2. eclipse4.7.0 (Oxygen) 3. mysql 5.7 在pom.xml文件中, ...

  5. install MariaDB 10.2 on Ubuntu 18

    Here are the commands to run to install MariaDB 10.2 from the MariaDB repository on your Ubuntu syst ...

  6. Spring的由来以及发展

    Spring简史: 第一阶段:XML配置在Spring1.x时代,都是使用XML配置Bean,随着项目扩大,我们把XML文件切分成多个配置文件,那时候需要频繁地在开发类和配置文件之间切换    第二阶 ...

  7. Windows登录后不记得密码

    (不用输入原密码的方式修改用户的密码) 1 命令行输入命令:mmc  #进入到控制台 2 点击左上角的文件,选择添加/删除管理单元 3 选择本地用户和组管理单元,添加到本地计算机,完成,确定 4 添加 ...

  8. java基础(二):java内部类

    内部类像寄生虫一样生存在其他类[外部类]的内部.定义在类的内部的类叫内部类,它缩小了可见性.根据内部类定义结构的不同,可以把内部类分为 成员内部类和局部内部类.成员内部类定义的地方和外部类的成员变量和 ...

  9. Jmeter 传 PUT 请求方式

    最近用 Jmeter 发送 PUT 请求,踩了个坑,现记录如下: 难点在在于 body 内有一大串 json 形式的内容 1.PUT 请求的 body 内,直接将 json串传 form-data 形 ...

  10. Java基础随记-不定时更新

    一.hashMap与hashTable与ConcurrentHashMap: 1.HashMap是继承自AbstractMap类,而HashTable是继承自Dictionary类.不过它们都同时实现 ...