我有自己想要绑定的对象/视图,我知道我可以执行以下操作。
var set = this.CreateBindingSet<MyView,MyViewModel>();
set.Bind( MyOwnObject ).For( o => o.MyDefaultProperty ).To( o => o.PropertyOnViewModel);
set.Apply();
这一切都很棒..
我的问题是如何摆脱For()位。
当我绑定到像'label'这样的内置视图时,我不必使用For。
如何设置我自己的默认属性?
答案 0 :(得分:5)
默认属性列表是在BindingBuilder
步骤中设置的 - 在Setup
InitializeLastStep()
中调用
该列表由实现IMvxBindingNameRegistry
public interface IMvxBindingNameRegistry
{
void AddOrOverwrite(Type type, string name);
void AddOrOverwrite<T>(Expression<Func<T, object>> nameExpression);
}
要将您自己的属性添加到此列表,您可以获得对此实现的引用。两种简单的方法是:
在设置中,您可以覆盖FillBindingNames
:
protected virtual void FillBindingNames(IMvxBindingNameRegistry registry)
{
base.FillBindingNames(registry);
registry.AddOrOverwrite(typeof(MyControl), "MyDefaultProperty");
}
或在任何代码中(最好在UI或设置线程上运行),您可以在IoC容器中注册为:
Mvx.CallbackWhenRegistered<IMvxBindingNameRegistry>(registry =>
{
registry.AddOrOverwrite(typeof(MyControl), "MyDefaultProperty");
});