You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
using System;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
|
|
|
|
|
namespace DownKyi.CustomControl
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 绑定命令的工具类
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class MyDelegateCommand : ICommand
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查命令是否可以执行的事件,在UI事件发生导致控件状态或数据发生变化时触发
|
|
|
|
|
/// </summary>
|
|
|
|
|
public event EventHandler CanExecuteChanged
|
|
|
|
|
{
|
|
|
|
|
add
|
|
|
|
|
{
|
|
|
|
|
if (_canExecute != null)
|
|
|
|
|
{
|
|
|
|
|
CommandManager.RequerySuggested += value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
remove
|
|
|
|
|
{
|
|
|
|
|
if (_canExecute != null)
|
|
|
|
|
{
|
|
|
|
|
CommandManager.RequerySuggested -= value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 判断命令是否可以执行的方法
|
|
|
|
|
/// </summary>
|
|
|
|
|
private Func<object, bool> _canExecute;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 命令需要执行的方法
|
|
|
|
|
/// </summary>
|
|
|
|
|
private Action<object> _execute;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 创建一个命令
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="execute">命令要执行的方法</param>
|
|
|
|
|
public MyDelegateCommand(Action<object> execute) : this(execute, null)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 创建一个命令
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="execute">命令要执行的方法</param>
|
|
|
|
|
/// <param name="canExecute">判断命令是否能够执行的方法</param>
|
|
|
|
|
public MyDelegateCommand(Action<object> execute, Func<object, bool> canExecute)
|
|
|
|
|
{
|
|
|
|
|
_execute = execute;
|
|
|
|
|
_canExecute = canExecute;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 判断命令是否可以执行
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="parameter">命令传入的参数</param>
|
|
|
|
|
/// <returns>是否可以执行</returns>
|
|
|
|
|
public bool CanExecute(object parameter)
|
|
|
|
|
{
|
|
|
|
|
if (_canExecute == null) return true;
|
|
|
|
|
return _canExecute(parameter);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 执行命令
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="parameter"></param>
|
|
|
|
|
public void Execute(object parameter)
|
|
|
|
|
{
|
|
|
|
|
if (_execute != null && CanExecute(parameter))
|
|
|
|
|
{
|
|
|
|
|
_execute(parameter);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|