1

MVVMアプリケーションを実行するとき、私は通常、サービスロケーターパターンで動作する中央のViewModelロケーターを持っています。これにより、Ninjectを介してサービスでViewModelを注入できます

私のViewModelロケーターは通常次のようになります。

public class ViewModelLocator
{
    private static IKernel kernel;

    public ViewModelLocator()
    {
        if (kernel == null)
        {
            kernel = new StandardKernel(new ConfigModule());
        }
    }

    public static T Get<T>()
    {
        return kernel.Get<T>();
    }


    public static ProductViewModel ProductViewModel{

        get { return kernel.Get<ProductViewModel>(); }

    }

    public UserViewModel UserViewModel {
        get { return kernel.Get<UserViewModel>();}
    }
}

public class ConfigModule : NinjectModule
{
    public override void Load()
    {

        Bind<ProductViewModel>().ToSelf();
        Bind<UserViewModel>().ToSelf();

    }
}

今、私は「注文」と呼ばれる別のモジュールを追加することを考えています。だから私はOrderViewModel(または実際にはそれらのいくつか)を持っています。そして、それらを分離してMEF経由でインポートしてもらいたいと思います。

このアプローチを拡張/変更して、中心のビューモデルロケーターとインポートされたビューモデルおよびビューを操作できるようにするにはどうすればよいですか。

ええ、私はプリズムとカリバーンを知っていますが、アプローチを見るのは私にとってストレスになるでしょう...

助けてくれてありがとう....

4

1 に答える 1

0

MVVM Light サンプル (具体的にはViewModelLocator ) を見て、実際のパターンの素晴らしい例を確認してください。

注: このパターンを適用するために MVVM Light フレームワークを使用する必要はありません。実際に見ているのはアーキテクチャです。フレームワークはそれを簡単にします!FWIW、フレームワークを使用することをお勧めします... :)

于 2011-09-23T00:44:36.890 に答える