我需要知道如何格式化给定的数字(或日期,或其他) 总是意大利语,无论客户在哪个国家......
示例:
<TextBlock Text={Binding Price, StringFormat=C2} />
每个国家/地区必须返回“€1.520,45”才能执行。 即使该机器上没有安装意大利语。
我怎样才能实现这一目标? (如果我可以在应用程序范围内进行,可能会更好)
提前致谢。
答案 0 :(得分:0)
您可以明确设置Silverlight应用程序的UICulture和Culture,以确保无论用户区域设置如何,都将修复UICulture和Culture。
这可以通过两种方式实现
1-设置浏览器上的object标签
<param name="uiculture" value="it-IT" />
<param name="culture" value="it-IT" />
2-在Application_Startup
Thread.CurrentThread.CurrentCulture = new CultureInfo("it-IT");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("it-IT");
更新:使用StringFormat时,上述操作似乎没有生效。鉴于此,我将恢复使用自定义值转换器。以下是样本
MainPage.xaml中
<UserControl x:Class="SLLocalizationTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SLLocalizationTest"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
<local:DoubleToStringConverter x:Key="DoubleToStringConverter" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel>
<TextBlock Text="{Binding Price, Converter={StaticResource DoubleToStringConverter}, ConverterParameter=C2 }"/>
<TextBlock Text="{Binding Price, Converter={StaticResource DoubleToStringConverter} }"/>
</StackPanel>
</Grid>
</UserControl>
MainPage.xaml.cs中
using System;
using System.Windows;
using System.Windows.Controls;
using System.Globalization;
using System.Windows.Data;
namespace SLLocalizationTest
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
DataContext = this;
}
public double Price
{
get { return 12353.23; }
}
}
public class DoubleToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
if (value is double)
{
return ((double)value).ToString((string)parameter);
}
return value.ToString();
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}