我看到了以下问题:how-do-you-apply-a-valueconverter-to-a-convention-based-caliburn-micro-binding。
我无法对该主题发表评论,所以我在这里发帖。
如何在使用基于约定的绑定时在Caliburn.Micro中使用ConventionManager.ApplyValueConverter
作为值转换器?
有人可以在这里写一个例子吗?
答案 0 :(得分:8)
ApplyValueConverter
被定义为Func<>
类中的静态ConventionManager
委托。
为了在约定绑定方案中提供自己的转换器,您需要在引导程序的Func<>
方法中定义自己的Configure()
,如下所示:
注意:我假设转化时间为string
到Opacity
。
public class AppBootstrapper : Bootstrapper<ShellViewModel> {
private static IValueConverter StringToOpacityConverter = new StringToOpacityConverter();
public override void Configure() {
var oldApplyConverterFunc = ConventionManager.ApplyValueConverter;
ConventionManager.ApplyValueConverter = (binding, bindableProperty, property) => {
if (bindableProperty == UIElement.Opacity && typeof(string).IsAssignableFrom(property.PropertyType))
// ^^^^^^^ ^^^^^^
// Property in XAML Property in view-model
binding.Converter = StringToOpacityConverter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^
// Our converter used here.
// else we use the default converter
else
oldApplyConverterFunc(binding, bindableProperty, property);
};
}
}