当我们在XAML中使用静态双精度值时,如何指定它们所提供的格式?
例如:
<Rectangle>
<Rectangle.Opacity>
<Binding Path="IsDimmed" Converter="{StaticResource boolToDoubleConverter}" ConverterParameter="0.8"/>
</Rectangle.Opacity>
</Rectangle>
使用转换器方法
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return double.Parse((string)parameter, culture);
}
问题在于,在小数点使用“,”作为分隔符的机器上,转换方法会失败或返回错误的值。
我不想在
Parse()
方法中设置InvariantCulture,因为转换器可能在某些地方用于解析用户输入,这就是为什么仍然需要应用culture
参数的原因。如果我将值指定为资源,例如
<sys:Double x:Key="dimValue">0.8</sys:Double>
,则转换器参数变为double类型,但在被解析之前会被强制转换为字符串。因此,我想以en-GB格式指定值,如
ConverterParameter="0.8" ConverterParameterCulture="en-GB"/>
。是否有可能在不创建冗长的MultiValueConverter的情况下实现这一点?