绑定到当前绑定上下文?

时间:2013-07-24 13:07:05

标签: xamarin.android mvvmcross

我有一个项目模板,用于显示List<IGrouping<string, string>>。为了做到这一点,我需要将ItemsSource绑定到当前绑定上下文,在WPF中,我会像{Binding DataContext}这样做,我将如何在MvvmCross中执行此操作?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    local:MvxBind="Text Key"/> !**IGrouping.Key**!
  <Mvx.MvxLinearLayout
    android:id="@+id/items"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    local:MvxBind="ItemsSource DataContext" !**This doesn't work, should bind IGrouping as IEnumerable<string>**!
    local:MvxItemTemplate="@layout/item_myitem"/>
</LinearLayout>

1 个答案:

答案 0 :(得分:2)

您可以通过提供空路径来绑定到当前源。

为此,我发现最好的语法就是使用“。”

<Mvx.MvxLinearLayout
   android:id="@+id/items"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical"
   local:MvxBind="ItemsSource ."
   local:MvxItemTemplate="@layout/item_myitem"/>

然而,有些人更喜欢使用空字符串 - 尽管我发现它的可读性稍差

<Mvx.MvxLinearLayout
   android:id="@+id/items"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical"
   local:MvxBind="ItemsSource"
   local:MvxItemTemplate="@layout/item_myitem"/>

这个选项 - 还有更多 - 在数据绑定文章中讨论了 -

<强> https://github.com/slodge/MvvmCross/wiki/Databinding

(注意:nuget v3.0.9中的空字符串绑定已被破坏,但应在v3.0.10中修复 - 请参阅Error when making bind ObservableCollection<string> for a MvxListView