Xamarin iOS:从viewModel刷新页面
在Xamarin for iOS开发中,是否有方法可以从其Xamarin iOS:从viewModel刷新页面,ios,mvvm,xamarin,xamarin.ios,Ios,Mvvm,Xamarin,Xamarin.ios,在Xamarin for iOS开发中,是否有方法可以从其视图模型中刷新视图? 如果有帮助的话,我正在使用MVVMCross 请给我一些建议 谢谢。我在项目中所做的就是使用MvvmCross的Messenger插件来广播消息。然后在视图中,订阅该消息,当广播消息时,相应地刷新视图 首先,创建一个扩展MvxMessage的消息类 public class RefreshViewMessage : MvxMessage { // Add other properties if needed
视图模型
中刷新视图
?
如果有帮助的话,我正在使用MVVMCross
请给我一些建议
谢谢。我在项目中所做的就是使用MvvmCross的Messenger插件来广播消息。然后在视图中,订阅该消息,当广播消息时,相应地刷新视图 首先,创建一个扩展MvxMessage的消息类
public class RefreshViewMessage : MvxMessage
{
// Add other properties if needed
// public string SomeParameter { get; set; }
public RefreshViewMessage(object sender) : base(sender)
{
}
}
其次,在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);
}
}
第三,在视图中订阅该消息
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
}
}
公共部分类视图:MvxViewController
{
公共视图(IntPtr句柄):基(句柄){}
公共视图():基(){}
专用IMvxMessenger\u messenger;
私有MvxSubscriptionToken _token;//保留订阅令牌以防止垃圾收集不及时
公共覆盖无效ViewDidLoad()
{
base.ViewDidLoad();
_messenger=Mvx.Resolve();
_令牌=_messenger.SubscribeOnMainThread(OnRefreshView);
}
私有void OnRefreshView(RefreshViewMessage消息)
{
//如果需要,访问附加到邮件的数据
//var param=message.SomeParameter;
//刷新视图
}
}
我在项目中所做的是使用MvvmCross的Messenger插件来广播消息。然后在视图中,订阅该消息,当广播消息时,相应地刷新视图
首先,创建一个扩展MvxMessage的消息类
public class RefreshViewMessage : MvxMessage
{
// Add other properties if needed
// public string SomeParameter { get; set; }
public RefreshViewMessage(object sender) : base(sender)
{
}
}
其次,在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);
}
}
第三,在视图中订阅该消息
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
}
}
公共部分类视图:MvxViewController
{
公共视图(IntPtr句柄):基(句柄){}
公共视图():基(){}
专用IMvxMessenger\u messenger;
私有MvxSubscriptionToken _token;//保留订阅令牌以防止垃圾收集不及时
公共覆盖无效ViewDidLoad()
{
base.ViewDidLoad();
_messenger=Mvx.Resolve();
_令牌=_messenger.SubscribeOnMainThread(OnRefreshView);
}
私有void OnRefreshView(RefreshViewMessage消息)
{
//如果需要,访问附加到邮件的数据
//var param=message.SomeParameter;
//刷新视图
}
}