我使用Cheesebaron的MvxViewPagerFragmentAdapter例的实现,可以在这里http://blog.ostebaronen.dk/2013/07/fragments-and-viewpager-with-mvx.htmlMVVMCross手动绑定在MvxFragment与MvxViewPagerFragmentAdapter
var fragments = new List<MvxViewPagerFragmentAdapter.FragmentInfo>
{
new MvxViewPagerFragmentAdapter.FragmentInfo
{
FragmentType = typeof(JobDetailsView),
Title = "Detail",
ViewModel = ViewModel
},
new MvxViewPagerFragmentAdapter.FragmentInfo
{
FragmentType = typeof(JobFeaturesView),
Title = "Info",
ViewModel = ViewModel
}
}
发现在我的JobDetailsView的OnCreateView,我可以抬高我的布局使用BindingInflate任何绑定指定我在XML布局中指定了正确的工作。
我现在有要求以编程方式绑定一些元素,我尝试使用CreateBindingSet,但绑定不起作用。我试过了一个简单的文本属性和一个按钮点击。这些在XML中指定时都可以工作。
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Android.OS.Bundle savedInstanceState)
{
var ignored = base.OnCreateView(inflater, container, savedInstanceState);
this.EnsureBindingContextIsSet(savedInstanceState);
_view = this.BindingInflate(Resource.Layout.jobview_details, null);//jobview_withtabs_details
var signatureCard = _view.FindViewById<CardFeature>(Resource.Id.signature_cardview);
signatureCard.FindViewById<TextView>(Resource.Id.tv_basecard_header_title).Text = "Signature";
var signatureButton = signatureCard.FindViewById<Button>(Resource.Id.btn_basecard_footer).Text = "Capture";
var set = this.CreateBindingSet<JobDetailsView, JobWithTabsViewModel>();
set.Bind(signatureButton).To(vm => vm.SignatureClickCommand);
set.Apply();
return _view;
}
在我的输出窗口,我可以看到这一点,但我不知道怎样做才能解决这个问题:
04-16 17:40:43.721 I/mono-stdout(27727): MvxBind:Error: 23.79 Empty binding target passed to MvxTargetBindingFactoryRegistry
MvxBind:Warning: 23.80 Failed to create target binding for binding for SignatureClickCommand
[0:] MvxBind:Warning: 23.80 Failed to create target binding for binding for SignatureClickCommand
04-16 17:40:43.731 I/mono-stdout(27727): MvxBind:Warning: 23.80 Failed to create target binding for binding for SignatureClickCommand
人有什么想法?
UPDATE
以典型的方式,留下了一个小时,实现了我的错误。
我被输入懒惰:
var signatureButton = signatureCard.FindViewById<Button>(Resource.Id.btn_basecard_footer).Text = "Capture"
这令人困惑的结合。切换到:
var signatureButton = signatureCard.FindViewById<Button>(Resource.Id.btn_basecard_footer);
signatureButton.Text = "Capture";
而且它完美
你也可能想看看https://github.com/jamesmontemagno/PagerSlidingTabStrip-for-Xamarin.Android Cheesebaron的ViewPageIndicator有点过时了。 – Martijn00
干杯,会做 – wainy