当我们在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>
将值指定为资源,则转换器参数将变为双精度类型,但在解析之前将转换为字符串。
因此,我想以某种方式指定,该值以en-GB格式表示,如ConverterParameter="0.8" ConverterParameterCulture="en-GB"/>
。
这是否可能在某种程度上不需要创建一个臃肿的MultiValueConverter?
2条答案
按热度按时间xxb16uws1#
您可以使用
Binding
的ConverterCulture
属性来达成此目的:4ngedf3f2#
有时我会使用:
其中
glob
为: