有人可以帮助澄清如何正确使用IBindingTypeConverters。
我宣布了一个名为FromPromptTypeToValueConverter的转换器。我想通过传递两个参数在一个特定的情况下使用它:
this.OneWayBind(ViewModel,
vm => vm.PopupType,
view => view.ButtonOk.IsVisible,
new FromPromptTypeToValueConverter(OkValue: true, YesNoValue: false))
.DisposeWith(disposable);
但是发生错误,需要我在引导代码中注册转换器。但我不希望这样,因为我最终得到了两个转换器实例(一个在引导注册中创建,另一个在绑定中直接创建)。
有没有办法使用转换器进行注册?我想我的问题也是,“为什么要注册一个转换器,如果我只需要在一个地方使用它?”
答案 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 */);
参数传递的。