Mvvmcross Android - 视图模型填充期间的旋转片段视图



当我尝试在旋转时手动重新水合片段视图模型时,我遇到了问题。填充视图模型后,当我旋转片段时,一切似乎都很好,我所做的只是:

this.viewmodel = foo

但是,如果我尝试在填充期间旋转片段(例如从 Web 服务),然后在填充完成之前重新附加存储的视图模型,则视图似乎无法正确绑定。

我知道缺乏来源(在

这篇文章中),但我想知道这是否应该在原则上起作用,以及是否有办法解决绑定问题(尽管确实存在绑定上下文等),如果这确实是问题所在?

如果我在填充后再次旋转片段,视图将正常填充。

我想

我可能有一个初步的解决方案来解决我遇到的问题。我正在使用以下内容来运行代码post-。

TypedViewModel.PopulateAndRun(() =>
{
    DoSomething();
});

问题似乎是,这个动作只调用了一次,而且可能触发的操作是针对旧视图而不是新视图的。

除了上面的代码之外,我尝试添加以下代码,它有效

TypedViewModel.OnPopulated += () 
{
    DoSomething();
});

解决此问题的一种方法是指示 Android 在配置更改时不要重新创建活动。确保在活动属性中指定了"配置更改",并覆盖 OnConfigurationChanged。

   [活动(        标签 ="样品",        配置更改 = global::Android.Content.PM.ConfigChanges.Orientation |global::Android.Content.PM.ConfigChanges.ScreenSize |global::Android.Content.PM.ConfigChanges.KeyboardHidden        )]    公共类样本活动:Mvx片段活动    {       //...        public override void OnConfigurationChanged(global::Android.Content.Res.Configuration newConfig)        {            基础。OnConfigurationChanged(newConfig);        }    }

最新更新