wpf mvvm

wpf  mvvm的使用

/// <summary>
/// 通用命令
/// </summary>
public class RelayCommand : ICommand
{
public RelayCommand(Action<object> execute)
: this(execute, null)
{
}


/// <summary>
/// 构造函数
/// </summary>
/// <param name="execute"></param>
/// <param name="canExecute"></param>
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}


/// <summary>
/// 判断命令是否能执行
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute(parameter);
}


/// <summary>
/// 是否能执行变更
/// </summary>
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}


/// <summary>
/// 执行命令
/// </summary>
/// <param name="parameter"></param>
public void Execute(object parameter)
{
_execute(parameter);
}

private readonly Action<object> _execute;
private readonly Predicate<object> _canExecute;
}

 

 

 

/// <summary>
/// 实现属性更改通知基类
/// </summary>
public abstract class NotificationObject : INotifyPropertyChanged
{

#region INotifyPropertyChanged


/// <summary>
/// 属性变更事件
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;


/// <summary>
/// 执行变更
/// </summary>
/// <param name="name"></param>
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
#endregion
}

posted @ 2015-04-30 14:41  azdjdgh  阅读(126)  评论(0)    收藏  举报