我现在正在从我的xaml dp绑定后面的代码转移到使用CreateBindingSet,因为我相信从长远来看它会更容易维护。以前确认我没有错过任何绑定,我有一个带有通用测试例程的Windows Phone测试项目 - 它将解析所有控件的视图,并确认每个控件都有正确的绑定。我是用
做的 element.GetBindingExpression(dependencyProperty) // from System.Windows
这很有效 - 验证了我的所有观点。
但是现在我正在改变,所有这些测试都失败了。有没有人建议我如何使用CreateBindingSet和.Apply应用绑定时测试相同的东西。
提前致谢。
拉纳
疯狂背后的推理
作为一个懒惰的草皮,我梦想有一天我的视图将在所有平台上共享;在那之前,以下情况会做(我已经到位并且正常工作)
将在所有平台之间共享的BoilerPlate类:
#if __IOS
... needed namespaces
#else ....
public partial class FirstView
{
private new FirstViewModel ViewModel
{
get { return (FirstViewModel)base.ViewModel; }
}
private void CommonBinding()
{
var set = this.CreateBindingSet<FirstView, FirstViewModel>();
// do common bindings
set.Bind(PageText).For(c => c.Text).To(vm => vm.PageText).OneTime();
set.Apply();
}
}
然后View in Touch将是:
public partial class FirstView : MvxViewController
{
public override void LoadView()
{
// create
}
public override ViewDidLoad()
{
CommonBinding();
}
}
理论上,其他平台的观点几乎相似;只是不同的继承(MvxActivity with OnCreate和OnViewModelSet)/(MvxPhonePage with xaml / alternative,以及Loaded Event for binding)。
最后,一种常见的测试方法,以确保所有项目都以某种方式设置绑定。在我看来,在wp8支持自动视图之前,它只是拥有尽可能多的共享代码的方式。
我刚开始使用droid,并尝试使布局与xibFree兼容,我已经在触控项目中使用了xibFree。如果这样有效,我可以在droid和touch之间共享布局(或许我应该看看autoView)
答案 0 :(得分:0)
我个人不确定这些测试为您的应用程序增加了多少价值 - 这些感觉就像他们在&#34;复制代码&#34;而不是实际测试任何功能。
然而,这很大程度上取决于个人意见,如果您确实需要这种级别的测试,那么我认为您可以通过以下方式实现:
ApplyBinding
,以便您可以在测试时捕获为每个元素进行的调用IMvxBindingCreator
注册此课程