我无法理解为什么没有为Xamarin Forms应用程序触发WhenActivated func。该应用程序具有LoginViewModel和LoginView
这是示例应用程序代码。
第一个视图LoginView按预期加载。但是,我最好在WhenActivated func中加载服务和设置绑定,但它不会触发。请参阅LoginViewModel。
有什么想法吗?
感谢
答案 0 :(得分:2)
好的ossentoo,我不确定为什么,但似乎你想在你的视图模型上使用 WhenActivated ,你必须在你的视图上激活时使用,绑定是放在视图后面的代码上。这是一个小例子:
public class LoginViewModel : ViewModelBase /*IRoutableViewModel, ISupportsActivation etc*/
{
this.WhenActivated(disposables =>
{
Debug.WriteLine("ViewModel activated.").DisposeWith(disposables);
});
}
在视图上:
public partial class LoginView : ContentPageBase<LoginViewModel>
{
public LoginView()
{
InitializeComponent ();
this.WhenActivated(new Action<CompositeDisposable>(c =>
{
System.Diagnostics.Debug.WriteLine("From View ! (When Activated)");
/*instead of xaml bindings you can use ReactiveUI bindings*/
this.Bind(ViewModel, vm => vm.UserName,
v => v.UserName.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.Password,
v => v.Password.Text).DisposeWith(disposables);
}));
}
}
如果这有助于您,请告诉我。 :)