xamarin.forms - Xamarin Forms:WhenActivated 未针对视图模型触发响应式 UI
问题描述
我不明白为什么 Xamarin Forms 应用程序没有触发 WhenActivated 函数。该应用程序有一个 LoginViewModel 和一个 LoginView
- LoginView:继承自 ContentPageBase,它本身派生自:ContentPage, IViewFor 我认为这是预期的
- LoginViewModel:ReactiveObject、IRoutableViewModel、ISupportsActivation
这是示例应用程序代码。
第一个视图 LoginView 按预期加载。但是,理想情况下,我希望在 WhenActivated 函数中加载服务和设置绑定,但它没有触发。请参阅登录视图模型。
有任何想法吗?
谢谢
解决方案
好的,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);
}));
}
}
让我知道这是否对您有帮助。:)
推荐阅读
- android - 使用 androidx.fragment.app.FragmentContainerView 时出现 ClassNotFoundException
- javascript - 在由 onFinalize 触发的 Firebase 云函数中获取已创建文件的兄弟姐妹
- c - 为什么 sum1 = 46 和 sum2 = 48
- sql-server - 范围的存储过程参数
- android - 导致崩溃的奇怪启动行为
- regex - 如何(SUM(IF(REGEXMATCH(具有多个条件/条件的IMPORTRANGE?
- html - CSS 文件名有效,但文件路径无效
- php - 无法使用 cURL 删除 SFTP 文件
- php - Laravel 6 验证:规则数量有限制?
- octave - tricontour 与 matlab 版本或 octave clabel 不兼容