2017-08-19 2 views
1

Kann jemand helfen zu klären, wie man IBindingTypeConverters richtig benutzt?Wie implementiere ich einen Konverter in ReactiveUI?

Ich habe einen Konverter namens FromPromptTypeToValueConverter deklariert. Ich möchte es, indem man in zwei Parametern in einem speziellen Fall verwenden:

this.OneWayBind(ViewModel, 
    vm => vm.PopupType, 
    view => view.ButtonOk.IsVisible, 
    new FromPromptTypeToValueConverter(OkValue: true, YesNoValue: false)) 
.DisposeWith(disposable); 

Aber ein Fehler auftritt, die ich BRAUCHT den Konverter in dem Bootstrap-Code zu registrieren. Aber ich will das nicht, weil ich am Ende zwei Instanzen des Konverters (einer ist in der Bootstrapping-Registrierung und der andere direkt in der Bindung erstellt).

Gibt es eine Möglichkeit, den Konverter mit Registrierung zu verwenden? Ich denke, meine Frage lautet auch: "Warum einen Konverter registrieren, wenn ich ihn nur an einer Stelle verwenden muss?"

Antwort

3

Vor allem, wenn Sie nur die Umwandlung in einem Ort durchführen müssen, dann sind Sie besser dran, nur die Umwandlung Logik Bereitstellung in situ:

this.OneWayBind(this.ViewModel, x => x.Property, x => x.target, value => /* do conversion here */); 

Wenn Sie jedoch eine verwenden möchten Konverter Sie können:

this.OneWayBind(this.ViewModel, x => x.Property, x => x.target, vmToViewConverterOverride: /* converter instance here */); 

Beachten Sie, dass der Argumentname qualifiziert ist. Das Problem mit Ihrem vorhandenen Code ist, dass der von Ihnen erstellte Konverter als optionales conversionHint Argument übergeben wird.

+0

vmToViewConverterOverride: hat den Trick gemacht !! Danke Kent! – Maximus

Verwandte Themen