0

全て、

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
}
4

1 に答える 1

0
  1. 私がより多くの経験を積んだフレームワークプラットフォームでは、ICommand は と呼ばれる気の利いたクラスで実装されていDelegateCommandます。それは基本的にあなたExecuteCanExecuteメソッドを他の場所に実装することを可能にします。

  2. ビューモデルには、ビューモデルのモデルでメソッドを実行するコマンドがあります。

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

    }

于 2013-03-29T22:28:17.867 に答える