2

我有自己想要绑定的对象/视图,并且我知道我可以执行以下操作。

var set = this.CreateBindingSet<MyView,MyViewModel>();
set.Bind( MyOwnObject ).For( o => o.MyDefaultProperty ).To( o => o.PropertyOnViewModel);
set.Apply();

这一切都很好..

我的问题是如何摆脱 For() 位。

当我绑定到像“标签”这样的内置视图时,我不必使用 For。

如何设置自己的默认属性?

4

1 回答 1

5

默认属性列表是在步骤期间设置的- 在期间BindingBuilder调用SetupInitializeLastStep()

该列表由一个单例对象维护,该对象实现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");
        });
于 2013-07-24T09:20:10.807 回答