gpt4 book ai didi

ios - 在与 mvvmcross 绑定(bind)时,如何指定将哪个属性用作默认值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:30:04 25 4
gpt4 key购买 nike

我有自己想要绑定(bind)的对象/ View ,我知道我可以执行以下操作。

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

这一切都很好..

我的问题是如何去掉 For() 位。

当我绑定(bind)到像“标签”这样的内置 View 时,我不必使用 For。

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

最佳答案

默认属性列表是在 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");
});

关于ios - 在与 mvvmcross 绑定(bind)时,如何指定将哪个属性用作默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17829684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com