首页 > 解决方案 > Xamarin Forms:WhenActivated 未针对视图模型触发响应式 UI

问题描述

我不明白为什么 Xamarin Forms 应用程序没有触发 WhenActivated 函数。该应用程序有一个 LoginViewModel 和一个 LoginView

这是示例应用程序代码。

第一个视图 LoginView 按预期加载。但是,理想情况下,我希望在 WhenActivated 函数中加载服务和设置绑定,但它没有触发。请参阅登录视图模型。

有任何想法吗?

源代码

谢谢

标签: xamarin.formsreactiveui

解决方案


好的,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);
        }));
    }
}

让我知道这是否对您有帮助。:)


推荐阅读