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ステップSetup中に設定されます。InitializeLastStep()

リストは、実装するシングルトン オブジェクトによって維持されます。IMvxBindingNameRegistry

public interface IMvxBindingNameRegistry
{
    void AddOrOverwrite(Type type, string name);
    void AddOrOverwrite<T>(Expression<Func<T, object>> nameExpression);
}

このリストに独自のプロパティを追加するには、この実装への参照を取得できます。これを行うには、次の 2 つの簡単な方法があります。

セットアップでは、次をオーバーライドできます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 に答える