是否可以访问DataContext中包含的Items,而无需将其明确地转换为此ViewModel
。
假设我在MvxFrameControl视图上绑定DataContext
,然后在绑定后在代码隐藏中获取此DataContext。它看起来像一个匿名对象,其中包含一个名为ViewModel
的子项的项列表。我可以将这些项目或此DataContext的某些属性更新到另一个对象,依此类推吗?
即
this.DelayBind(() =>
{
var data = DataContext;
// It looks like data contains something called "Items" with a list of children viewModels.
});
我可以访问DataContext.Items[0]
,或至少DataContext.Items
,并将其绑定到可观察的集合吗?然后最终将一些项目与MvxFrameControl
上的观点(DataContext
s)进行瑞士绑定?
所以,摘要:我很好奇是否有办法在代码隐藏中使用DataContext
及其内容,因此我可以创建一个通用MvxFrameControl
来将数据分发到自定义视图基于瑞士绑定。
我有ViewModels
包含列表列表,我想在代码隐藏中处理很多情况,因为我遇到了包含MvxListView
MvxListView
的大量内存问题}第
[编辑]
这实际上是我在我的代码中所做的,这使我认为我应该完全重新定义绑定是如何完成的。我会写一个小假的axml:
//警告任何人:这是假布局,不要使用
view_myactivity_layout.axml:
<LinearLayout>
<MvxListView
android:MvxItemTemplate="@layout/food_category_item"
local:MvxBind="ItemsSource FoodCategories" />
</LinearLayout>
food_category_item.axml:
<LinearLayout>
<TextView
local:MvxBind="Text Category" />
<MvxListView
android:MvxItemTemplate="@layout/list_of_food_for_a_category_item"
local:MvxBind="ItemsSource FoodList" />
</LinearLayout>
list_of_food_for_a_category_item.axml:
<LinearLayout>
<TextView
local:MvxBind="Text NameOfThatFood" />
<MvxListView
android:MvxItemTemplate="@layout/list_of_colors_for_that_food_item"
local:MvxBind="ItemsSource FoodList" />
</LinearLayout>
[ETC ...]
嵌套绑定控件运行良好,但滚动时会发生大量GC。所以这就是为什么我在考虑使用反射来制作我自己的绑定模式的原因。