如何在ReactiveUI中实现Converter?

时间:2017-08-19 02:31:18

标签: system.reactive reactiveui

有人可以帮助澄清如何正确使用IBindingTypeConverters。

我宣布了一个名为FromPromptTypeToValueConverter的转换器。我想通过传递两个参数在一个特定的情况下使用它:

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

但是发生错误,需要我在引导代码中注册转换器。但我不希望这样,因为我最终得到了两个转换器实例(一个在引导注册中创建,另一个在绑定中直接创建)。

有没有办法使用转换器进行注册?我想我的问题也是,“为什么要注册一个转换器,如果我只需要在一个地方使用它?”

1 个答案:

答案 0 :(得分:3)

首先,如果您只需要在一个位置执行转换,那么您最好只提供转换逻辑 in situ

et.setHighlightColor(color);

但是,如果您想使用转换器,您可以:

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

注意参数名称是否合格。现有代码的问题是您创建的转换器是作为可选的this.OneWayBind(this.ViewModel, x => x.Property, x => x.target, vmToViewConverterOverride: /* converter instance here */); 参数传递的。