using System; using System.Collections.Generic; namespace FWindSoft.MVVM { public class CommandAdapter { public object Tag { get; set; } /// /// 自定义事件BeforeCommand /// public event EventHandler BeforeCommand; /// /// 自定义事件AfterCommand /// public event EventHandler AfterCommand; /// /// 在命令执行之前执行的方法 /// /// public void DoBeforeCommand(CommandEventArgs args) { EventHandler handler = this.BeforeCommand; if (handler != null) handler(this, args); } /// /// 在命令执行之后执行的方法 /// /// public void DoAfterCommand(CommandEventArgs args) { EventHandler handler = this.AfterCommand; if (handler != null) handler(this, args); } internal List m_Commands = new List(); public IEnumerable Commands { get { return m_Commands; } } /// /// 刷新所有的命令 /// public void RefreshAllCommands() { foreach (BaseCommand itemCommand in Commands) { itemCommand.RaiseExecuteChanged(); } } EventHandler m_RequerySuggested; /// /// 注册事件 /// public CommandAdapter() { m_RequerySuggested = new EventHandler(CommandManager_RequerySuggested); System.Windows.Input.CommandManager.RequerySuggested += m_RequerySuggested; } void CommandManager_RequerySuggested(object sender, EventArgs e) { RefreshAllCommands(); } } }