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);
}
}
}