2013-03-29 6 views
0

Все,MVVM - ICommand и INotifyPropertyChanged запрос

Только начал ж/MVVM ... есть несколько статей, которые говорят Абт MVVM ... У меня есть 2 запросов ..

  1. Всегда INotifyPropertyChanged и ICommand реализация будет такой? или некоторые другие изменения?

  2. Если я нажму на какую-нибудь кнопку и вам нужно вызвать какой-то метод модели? Как я могу это достичь?

Thx заранее ..

Это свойство реализуется @ модель

#region INotifyPropertyChanged Members 
public event PropertyChangedEventHandler PropertyChanged; 
private void OnPropertyChanged(string propertyName) 
{ 
    if (PropertyChanged != null) 
    { 
     PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 
#endregion 

ICommand - это реализовано @ VM

private ICommand mUpdater; 
public ICommand UpdateCommand 
{ 
    get 
    { 
     if (mUpdater == null) 
      mUpdater = new Updater(); 
     return mUpdater; 
    } 
    set 
    { 
     mUpdater = value; 
    } 
} 

private class Updater : ICommand 
{ 
    #region ICommand Members 
    public bool CanExecute(object parameter) 
    { 
     return true; 
    } 

    public event EventHandler CanExecuteChanged; 

    public void Execute(object parameter) 
    { 

    } 

    #endregion 
} 

ответ

0
  1. В framework platform with which I've had more experience ICommand is imp подделанный отличным классом под названием DelegateCommand. Это в основном позволяет вам реализовать свои методы Execute и CanExecute еще где.

  2. На вашем ViewModel, вы бы команду, которая затем выполняет метод от модели ViewModel в:

    public class SomeViewModel : ViewModelBase<SomeModel> 
    { 
        //implemented in the base class: 
        //public Model SomeModel { get; } 
    
        internal ICommand SomeMethodThatIsReallyOnMyModel 
        { 
         get 
         { 
          return _someCommandYouHaveImplementedToDoJustThis; 
         } 
         //_someCommandYouHaveImplementedToDoJustThis.Execute: 
         //Model.SomeMethod() 
        } 
    
    //... 
    

    }

Смежные вопросы