tôi đang học MVVM cho C# Silverlight phát triển từRelayCommand trong C#
http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
và tôi đang bối rối về lớp RelayCommand đề cập trong bối cảnh. Mã này là:
public class RelayCommand : ICommand
{
#region Fields
readonly Action<object> _execute;
readonly Predicate<object> _canExecute;
#endregion // Fields
#region Constructors
public RelayCommand(Action<object> execute)
: this(execute, null)
{
}
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}
#endregion // Constructors
#region ICommand Members
[DebuggerStepThrough]
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute(parameter);
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public void Execute(object parameter)
{
_execute(parameter);
}
#endregion // ICommand Members
}
Đối với mà tôi không thực sự hiểu thế nào _execute
và _canExecute
công trình trong trường hợp này. (Tôi mới đến C# và thậm chí không chắc chắn những gì hành động và Predicate. Tôi biết họ là đại biểu nhưng whats sự khác biệt giữa họ và làm thế nào họ hoạt động?)
Và cũng có thể, trong chương trình, tôi đã không nhận được dòng
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
Ai đó có thể cho tôi giải thích về điều này, cảm ơn bạn!