在MvvmCross 4.x中,我使用自定义TabLayout
作为标题/标题创建了一个Android Views
。
自定义Views
绑定到某些文本和数字(显示为徽章)。
一切正常。但是,在更新(增加)徽章的编号时,选项卡标题视图将不会跟随。 我需要为标题创建一个自定义绑定,但我认为我在这里做错了。
创建标签Fragment
和ViewModel
后,我使用以下代码:
var bindingContext = new MvxAndroidBindingContext(Context, (IMvxLayoutInflaterHolder)Context,
FragmentStatePagerAdapter.TryGetTabViewModel(tabIndex));
var view = bindingContext.BindingInflate(tabTitleResourceId, null);
var tab = TabLayout.GetTabAt(tabIndex);
tab.SetCustomView(view);
然后,View(标题标题)会刷新一次,但不会再刷新。
为什么视图没有更新的任何想法?
如果重要的话,我会使用MvxFragment
(来自支持库)和MvxCachingFragmentStatePagerAdapter
。
答案 0 :(得分:1)
解决方案是将MvxAndroidBindingContext保持在某个地方。
所以,以下不是很好的代码应该可行。
var bindingContext = new MvxAndroidBindingContext(Context(IMvxLayoutInflaterHolder)Context,
FragmentStatePagerAdapter.TryGetTabViewModel(tabIndex));
tabCachedBindingsList.Add(bindingContext);
var view = bindingContext.BindingInflate(tabTitleResourceId, null);
var tab = TabLayout.GetTabAt(tabIndex);
tab.SetCustomView(view);