如何在 ReactiveUI 中实现转换器?

How to implement a Converter in ReactiveUI?

谁能帮助阐明如何正确使用 IBindingTypeConverters。

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

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

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

有什么方法可以通过注册来使用转换器吗??我想我的问题也是,"Why register a converter if I only need to use it in one spot?"

首先,如果您只需要在一个地方执行转换,那么您最好只提供转换逻辑就地:

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 */);

注意参数名称被限定。您现有代码的问题是您创建的转换器作为可选的 conversionHint 参数传递。