Xamarin 重新输入后,MvvmCross MvxSpinner不会更新
已解决 求你了,我需要帮助 安卓情况: MSVisualStudio 2015+Xamarin+Mvvmcross 4.4 一个活动和几个片段。使用默认演示者 1-使用MvxRecyclerView查看(片段),选择一行进行编辑 2-使用MvxSpinner显示新视图(片段),并将其值(a)更改为另一个值(B)。记住:A&B是对象Xamarin 重新输入后,MvvmCross MvxSpinner不会更新,xamarin,mvvmcross,Xamarin,Mvvmcross,已解决 求你了,我需要帮助 安卓情况: MSVisualStudio 2015+Xamarin+Mvvmcross 4.4 一个活动和几个片段。使用默认演示者 1-使用MvxRecyclerView查看(片段),选择一行进行编辑 2-使用MvxSpinner显示新视图(片段),并将其值(a)更改为另一个值(B)。记住:A&B是对象 <Mvx.MvxSpinner android:id="@+id/spinner_academic_start_week" android:la
<Mvx.MvxSpinner
android:id="@+id/spinner_academic_start_week"
android:layout_width="match_parent"
android:layout_height="wrap_content"
local:MvxDropDownItemTemplate="@layout/spinner_basic"
local:MvxItemTemplate="@layout/item_spinner_basic"
local:MvxBind="ItemsSource AcademicYearWeeksCollection; SelectedItem AcademicStartWeek; HandleItemSelected SelectAcademicStartWeekCommand" />
并使用
Close(this)
我会非常棒的
谢谢。当您使用
MvxFragment
属性创建片段时,默认情况下IsCacheableFragment
设置为true。因此,当片段和it ViewModel被缓存时,您将获得第二次返回页面时所经历的行为
理想情况下,您应该能够将IsCacheableFragment
设置为false
[MvxFragment(typeof(MainViewModel), Resource.Id.content_frame,
IsCacheableFragment = false)]
不过,我相信这项功能的表现并不理想。根据它将ViewModel设置为null
您可以尝试另一种方法,强制片段和视图模型对刷新自己。在片段中,父活动覆盖ShowFragment
,并将带有微调器的ViewModel的forceAddToBackStack
设置为true
protected override void ShowFragment(string tag, int contentId, Bundle bundle, bool forceAddToBackStack = false, bool forceReplaceFragment = false)
{
if (tag.Equals(typeof(<<Your View Model Type>>).FullName))
forceReplaceFragment = true;
base.ShowFragment(tag, contentId, bundle, forceAddToBackStack, forceReplaceFragment);
}
protected override void ShowFragment(字符串标记,int contentId,Bundle Bundle,bool-forceAddToBackStack=false,bool-forceReplaceFragment=false)
{
if(tag.Equals(typeof().FullName))
forceReplaceFragment=true;
ShowFragment(标记、contentId、bundle、forceAddToBackStack、forceReplaceFragment);
}
当你说“显示新视图”时,这是一个新片段、活动还是其他类型的视图?您是说当使用微调器返回页面时,会记住上一个选择的状态,并且您希望它是刷新重置页面吗?取消流程是如何工作的?
Close(this)
[MvxFragment(typeof(MainViewModel), Resource.Id.content_frame,
IsCacheableFragment = false)]
protected override void ShowFragment(string tag, int contentId, Bundle bundle, bool forceAddToBackStack = false, bool forceReplaceFragment = false)
{
if (tag.Equals(typeof(<<Your View Model Type>>).FullName))
forceReplaceFragment = true;
base.ShowFragment(tag, contentId, bundle, forceAddToBackStack, forceReplaceFragment);
}