Mvvmcross Android-在viewmodel填充期间旋转片段视图

Mvvmcross Android-在viewmodel填充期间旋转片段视图,android,xamarin,xamarin.android,mvvmcross,Android,Xamarin,Xamarin.android,Mvvmcross,当我试图在旋转时手动重新水合片段viewmodels时,我遇到了一个问题。填充viewmodel后,当我旋转片段时,一切似乎都正常工作,我所做的只是: this.viewmodel=foo 但是,如果我尝试在填充期间旋转片段(例如,从web服务),然后在填充完成之前重新连接存储的viewmodel,则视图似乎无法正确绑定 我知道(在这篇文章中)缺乏源代码,但我想知道这在原则上是否可行,是否有办法解决绑定问题(尽管存在绑定上下文等),如果这确实是一个问题 如果我在填充后再次旋转片段,视图将按正常方

当我试图在旋转时手动重新水合片段viewmodels时,我遇到了一个问题。填充viewmodel后,当我旋转片段时,一切似乎都正常工作,我所做的只是:

this.viewmodel=foo

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

我知道(在这篇文章中)缺乏源代码,但我想知道这在原则上是否可行,是否有办法解决绑定问题(尽管存在绑定上下文等),如果这确实是一个问题


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

我想我可能已经找到了解决问题的初始解决方案。我使用下面的代码来运行post-

TypedViewModel.PopulateAndRun(() =>
{
    DoSomething();
});
问题似乎是这个动作只被调用了一次,而且被触发的动作可能是针对旧视图而不是新视图的

除了上面的代码之外,我还尝试添加了下面的代码,并且成功了

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

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

[Activity( Label = "Sample", ConfigurationChanges = global::Android.Content.PM.ConfigChanges.Orientation | global::Android.Content.PM.ConfigChanges.ScreenSize | global::Android.Content.PM.ConfigChanges.KeyboardHidden )] public class SampleActivity : MvxFragmentActivity { //... public override void OnConfigurationChanged(global::Android.Content.Res.Configuration newConfig) { base.OnConfigurationChanged(newConfig); } } [活动( Label=“Sample”, ConfigurationChanges=global::Android.Content.PM.ConfigChanges.Orientation | global::Android.Content.PM.ConfigChanges.ScreenSize | global::Android.Content.PM.ConfigChanges.KeyboardHidden )] 公共类SampleActivity:MvxFragmentActivity { //... 公共覆盖无效OnConfigurationChanged(全局::Android.Content.Res.Configuration newConfig) { base.OnConfigurationChanged(newConfig); } }
您是否对托管片段的活动中的配置更改做出反应?是的,我使用OnSavedInstanceState和OnCreateView存储当前的viewmodel。