私はいくつかの質問があり、答えを探すのに苦労しています。MVVMを使用してViewModel - C#を変更するときに関数を実行します。
1:私は、アプリケーションが終了するたびに関数を呼び出すようにしなければなりません。終了ボタンをクリックして何かをします。
Q2:私はViewModelに制御を行うシェルのviewmodelでmenuitemcontrolを持っていますが、私はいくつかのWebサービス要求を行うが、想像し、それらを作成する上で、私は私がどのようにすることができます、のviewmodelで要求を更新することを要求された友人を削除私は他のビューモデルからこの呼び出しを行いますか?
EDIT:シナリオ - HomeViewModelとFriendsViewModelが含まれている ShellViewModel、私は私がホームを再度実行するWebサービスから情報を取得する機能をクリックしたときにすることを私はしたいFriendsViewModelで友人を受け入れました。 (私がやっていた場合は、コードビハインド私はにOnclick [ホーム]> runlogin()を使用します)
UpdateQ2:
public FriendsViewModel()
{
MessengerInstance.Register<NotificationMessage>(this, NotifyMe);
au = AuthSingleton.Instance.getAuthUser(); // Singleton that works like a session in the desktop App.
if (AuthSingleton.Instance.IsAuth == true)
loadFriends();
}
public void NotifyMe(NotificationMessage notificationMessage)
{
string notification = notificationMessage.Notification;
//do your work
loadFriends();
}
#endregion constructors
public async void loadFriends()
{
var response = await CommunicationWebServices.GetASM(au.idUser + "/friends", au.token);
var fh = JsonConvert.DeserializeObject<FriendsHandler>(response);
}
私が送信するためにコメンターのユーザーからの提案を使用することにしましたこれと第二のViewModelからのメッセージは、(かなりクールと簡単な解決策)を再度実行するためのアップデートを注文するが、を何とか私のシングルトンが削除されているので、それはを動作しません:Oメッセージが送信され
:MessengerInstance.Send(new NotificationMessage("notification message"));
よろしくお願いいたします。
あなたはICommands/RelayCommandsを考えましたか?UIからViewModelにこれらのコマンドを起動し、viewmodelに実際のWebサービスロジックを処理させることができます。 – aggietech
@aggietech私がそれをすればどこでコマンドを呼び出すべきですか?そしてどのビューモデルからですか?シェル(別のビューモデルを含む)? – Antoine
Ok - IoC(または何らかのコンテナ)を使用してビューモデルを登録している場合は、そのビューモデルの現在のインスタンスを取得することでそれらを参照できるはずです – aggietech