0
iOS開発のXamarinでは、ViewModel
からview
をリフレッシュできる方法はありますか? MVVMCrossを使用しています。Xamarin iOS:viewModelのページを更新する
アドバイスをしてください。
ありがとうございました。
iOS開発のXamarinでは、ViewModel
からview
をリフレッシュできる方法はありますか? MVVMCrossを使用しています。Xamarin iOS:viewModelのページを更新する
アドバイスをしてください。
ありがとうございました。
私のプロジェクトでやっていることは、MvvmCrossのメッセンジャープラグインを使ってメッセージをブロードキャストすることです。次に、ビューでそのメッセージを購読し、ブロードキャストされている場合は、それに応じてビューを更新します。
まず、MvxMessageを拡張したMessageクラスを作成します。
public class RefreshViewMessage : MvxMessage
{
// Add other properties if needed
// public string SomeParameter { get; set; }
public RefreshViewMessage(object sender) : base(sender)
{
}
}
第2に、そのメッセージをViewModelでブロードキャストします。
public class ViewModel : MvxViewModel
{
private IMvxMessenger _messenger;
public MainViewModel(IMvxMessenger messenger)
{
_messenger = messenger;
}
public void RefreshView()
{
_messenger.Publish(new RefreshViewMessage(this));
// Maybe some parameters need to be attached
// var message = new RefreshViewMessage(this) { SomeParameter = "stuff" };
// _messenger.Publish(message);
}
}
第3に、ビュー内のそのメッセージを購読します。
public partial class View : MvxViewController<ViewModel>
{
public View(IntPtr handle) : base(handle) { }
public View() : base() { }
private IMvxMessenger _messenger;
private MvxSubscriptionToken _token; // keep a subscription token to prevent untimely garbage collection
public override void ViewDidLoad()
{
base.ViewDidLoad();
_messenger = Mvx.Resolve<IMvxMessenger>();
_token = _messenger.SubscribeOnMainThread<RefreshViewMessage>(OnRefreshView);
}
private void OnRefreshView(RefreshViewMessage message)
{
// Access data attached to the message if needed
// var param = message.SomeParameter;
// Refresh view
}
}