using System; using System.Collections.Generic; using System.Text; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Windows; namespace DotNet.RevitUI.MVVM { /// /// 委托式revit命令 /// public class RevitRelayCommand : RevitCommand { private readonly Func m_Execute; private readonly Func m_CanExecute; public RevitRelayCommand(Func execute, Func canExecute) { m_Execute = execute ?? throw new ArgumentNullException("execute"); m_CanExecute = canExecute; } public RevitRelayCommand(Func execute) : this(execute, null) { } protected override bool CanExecute(Autodesk.Windows.RibbonItem parameter) { return m_CanExecute == null || m_CanExecute(); } protected override Result Invoke(ExternalCommandData commandData, ref string message, ElementSet elements) { return m_Execute(commandData); } } }