0

続行するにはユーザーがログインする必要があるアプリケーションを作成します。

接続され、現在のViewModelのCurrentAccountPropertyに割り当てられているユーザー。

では、この現在接続されているアカウントを、そのアカウントとそのデータと相互作用する他のすべてのViewModelからアクセスできるようにするにはどうすればよいですか?

たとえば、ログインの詳細を操作するViewModels、たとえば、RecentActivitiesプロパティに何かを追加するViewModelsなどです。

現在のアカウントへの参照を保持する必要がありますか?このオブジェクトを使用する各ViewModelのCurrentAccountのようなものですか?

ありがとう。

4

2 に答える 2

1

さて、私は通常Export、ユーザーがログインした後に設定した(MEF)プロパティです。

    /// <summary>
    /// Gets or sets LoggedUser.
    /// </summary>
    [Export]
    public UserInfo LoggedUser { get; set; }

次に、Importどこでもログに記録されたユーザーにアクセスする必要があります。

    /// <summary>
    /// Gets or sets LoggedUser.
    /// </summary>
    [Import]
    public UserInfo LoggedUser { get; set; }

もちろん、任意のIoCコンテナを使用することもできます。また、MVVMについて話すときは、ある種のIoCを使用する必要があります。

于 2012-12-10T12:50:39.513 に答える
1

(依存性注入/ IOCコンテナ)を使用している場合、私が通常これを行う方法は、依存性注入を使用することです-コンテキストビューモデルを作成してシングルトンにし、それを使用する必要がある各ビューモデルのコンストラクターに注入します。したがって、アプリが読み込まれたときに作成され、必要なときに入力されてから、アプリ全体でコンテキストとして保持されます。

したがって、DIとIOCを使用している場合。Unityのようなものを使用している場合は、ControlledContainerLifetime()オプションを使用してシングルトンにします。

コンテナにcontextviewmodelを追加する必要があります。また、(Unityなどを使用している場合は解決します)、初めて必要になったときに、必要なログインプロパティを挿入して更新します。その後、別のビューモデルで使用する必要がある場合は、[Dependency]属性を使用するか、コンストラクターに再度挿入します。次に、contextviewmodelはシングルトンであるため、以前に設定されたプロパティを持つcontextviewmodelの同じインスタンスが含まれます。コードサンプルが必要な場合はお知らせください。

このビューモデルを、使用する他のクラスのいずれかに注入する限り、それを使用することができ、アプリの存続期間中持続します。

于 2012-12-10T12:29:51.977 に答える