如何在 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
参数传递。
谁能帮助阐明如何正确使用 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
参数传递。