use*_*473 4 android model-binding mvvmcross xamarin
我在Xamarin中使用MvvMCross绑定片段代码有一点问题。首先,我想做什么或要做什么:我希望我的解释还可以。我从最低的元素开始。首先,我建立动态的UI。我有很多“模板”。它们定义了我的片段片段,例如Lable和ACTextEdit-Field。
然后,我有很多片段(我的视图)。它们包含此代码片段。在一个单独的类中,我将片段添加到Fragment中,并为其赋予唯一的ID。Ostebaron:
http://blog.ostebaronen.dk/2013/07/fragments-and-viewpager-with-mvx.html
现在,我必须使用Fragement和VieModel创建一个Bindingset。然后,我必须将元素与视图模型中的属性绑定。但我不知道代码中的哪个位置。我试图在HomeView的OncreateView函数中执行此操作,但是它没有用。
有人知道如何解决这个问题或给我一些建议吗?
我选择绑定此:
using Android.OS;
using Android.Views;
using Android.Widget;
using Cirrious.MvvmCross.Binding.BindingContext;
using Cirrious.MvvmCross.Binding.Droid.BindingContext;
using Cirrious.MvvmCross.Droid.Fragging.Fragments;
using TipCalc.Core.ViewModels;
namespace TipCalc.UI.Droid.Views.Fragments
{
public class TipCalcFragment : MvxFragment
{
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.Inflate(Resource.Layout.view_tip, container, false);
var edit = v.FindViewById<TextView>(Resource.Id.editTest43);
var ignore = base.OnCreateView(inflater, container, savedInstanceState);
var set = this.CreateBindingSet<TipCalcFragment, TipViewModel>();
set.Bind(edit).To(vm => vm.Tip);
set.Apply();
return this.BindingInflate(Resource.Layout.view_tip, null);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且它可能无法在错误的地方工作?
我强烈建议您在布局文件中声明绑定。然后,您的OnCreateView可以简化为:
public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
this.EnsureBindingContextIsSet (savedInstanceState);
return this.BindingInflate(Resource.Layout.UserHeaderView, null);
}
Run Code Online (Sandbox Code Playgroud)
即使未在布局文件中声明它,也应始终调用SecureBindingContextIsSet。这是一个扩展方法,因此您可能必须声明
在您的使用中。
| 归档时间: |
|
| 查看次数: |
2256 次 |
| 最近记录: |