【问题标题】:MvvmCross : databinding programmaticallyMvvmCross :以编程方式进行数据绑定
【发布时间】:2012-10-25 17:20:52
【问题描述】:

我认为我需要以编程方式绑定数据来解决我的问题。

我使用托管 2 个选项卡的 TabHost。 当 TabHost 出现时,我需要在第二个选项卡中加载 MvxBindableListView,并将第一个选项卡保留为默认选项卡。

我正在做的是毫无问题地启动第二个选项卡活动,因为我使用此代码检查了进程:

protected override void OnViewModelSet()
    {
        SetContentView(Resource.Layout.Page_ActivityView);
        System.Diagnostics.Debug.WriteLine("activityView started");

        MvxBindableListView mvxBindableListView = FindViewById<MvxBindableListView>(Resource.Id.mvxBindableListView);
        mvxBindableListView.ChildViewAdded += new System.EventHandler<Android.Views.ViewGroup.ChildViewAddedEventArgs>(mvxBindableListView_ChildViewAdded);
    }

“activityView started”显示在输出调试器中,但没有引发 MvxBindableListView.ChildViewAdded 事件,仅当我单击第二个选项卡时。​​p>

所以我认为 MvxBindableListView 不是数据绑定的。

提前感谢帮助我以编程方式加载我的第二个标签。

【问题讨论】:

  • 我不太明白问题描述。您能否解释更多(显示更多代码?)有关如何动态添加选项卡的信息?以及为什么需要以编程方式调用 ChildViewAdded?

标签: windows-phone-7 xamarin.ios xamarin.android xamarin mvvmcross


【解决方案1】:

我认为ChildViewAdded 是在呈现 ListView 时发生的事件 - 那时它需要“绘制列表项”,然后它会向其适配器询问屏幕的子视图。当您向下滚动列表时,它会要求更多的子视图 - 但它也会重用视图 - 所以对于一个简单的列表,您应该只(希望)在 ChildViewAdded 上获得 N+1 次调用,以获得显示 N 个项目的列表一次。


因此,列表完全有可能被数据绑定但永远不会调用 ChildViewAdded - 在列表被“绘制”之前不会被调用


遗憾的是,Xamarin 文档在这里没有帮助 - http://docs.mono-android.net/monodoc.ashx?link=E%3AAndroid.Views.ViewGroup.ChildViewAdded


注意:如果您确实想以编程方式绑定,那么您可以这样做 - 使用 Bind() 方法和扩展方法。但是,我在这里没有对此进行扩展 - 因为这听起来并不是您真正需要的!

【讨论】:

  • 我使用 ChildViewAdded 从 listItem 获取数据并获取 UIControl 但您告诉我这样做是错误的方法:void mvxBindableListView_ChildViewAdded(object sender, Android.Views.ViewGroup.ChildViewAddedEventArgs e ) { MvxBindableListView mvxBindableListView = (MvxBindableListView)sender; int indexOfChild = mvxBindableListView.IndexOfChild(e.Child);客户客户= ViewModel.DataStore.GetCustomerFromIndex(indexOfChild); TextView textViewCustomer = e.Child.FindViewById(Resource.Id.textViewCustomer);
  • 问题是我想加载整个 MvxBindableListView 以在每个 ListItem 中获取一个 UIControl,这似乎是不可能的,因为只有屏幕上显示的视图可用。
  • 您可以在这里关注讨论:stackoverflow.com/questions/13075521/…
猜你喜欢
  • 1970-01-01
  • 2021-03-14
  • 2016-09-21
  • 2012-06-14
  • 1970-01-01
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
相关资源
最近更新 更多