当我尝试在旋转时手动重新水合片段视图模型时,我遇到了问题。填充视图模型后,当我旋转片段时,一切似乎都很好,我所做的只是:
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); } }