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