迭代DataContext项而不将其强制转换为viewmodel类型

时间:2014-04-09 03:58:36

标签: mvvmcross

是否可以访问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。所以这就是为什么我在考虑使用反射来制作我自己的绑定模式的原因。

0 个答案:

没有答案