Xamarin Forms:WhenActivated 没有被触发 reactiveui for viewmodel
Xamarin Forms: WhenActivated not being fired reactiveui for viewmodel
我不明白为什么没有为 Xamarin Forms 应用程序触发 WhenActivated 函数。该应用程序有一个 LoginViewModel 和一个 LoginView
- LoginView:继承自 ContentPageBase,它本身派生自:ContentPage、IViewFor,我认为这是预期的
- LoginViewModel:ReactiveObject、IRoutableViewModel、ISupportsActivation
这是示例应用程序代码。
第一个视图 LoginView 已按预期加载。但是,理想情况下,我想在 WhenActivated 函数中加载服务和设置绑定,但它没有触发。请参阅登录视图模型。
有什么想法吗?
谢谢
好的 ossentoo,我不确定为什么但是如果你想在你的视图模型上使用 WhenActivated 你 必须 使用 when在您的视图上激活,绑定放置在视图的代码后面。这是一个小例子:
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);
}));
}
}
如果这对您有帮助,请告诉我。 :)
我不明白为什么没有为 Xamarin Forms 应用程序触发 WhenActivated 函数。该应用程序有一个 LoginViewModel 和一个 LoginView
- LoginView:继承自 ContentPageBase,它本身派生自:ContentPage、IViewFor,我认为这是预期的
- LoginViewModel:ReactiveObject、IRoutableViewModel、ISupportsActivation
这是示例应用程序代码。
第一个视图 LoginView 已按预期加载。但是,理想情况下,我想在 WhenActivated 函数中加载服务和设置绑定,但它没有触发。请参阅登录视图模型。
有什么想法吗?
谢谢
好的 ossentoo,我不确定为什么但是如果你想在你的视图模型上使用 WhenActivated 你 必须 使用 when在您的视图上激活,绑定放置在视图的代码后面。这是一个小例子:
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);
}));
}
}
如果这对您有帮助,请告诉我。 :)