gpt4 book ai didi

c# - XAML 中的 WPF StringFormat 和本地化

转载 作者:行者123 更新时间:2023-11-30 17:07:28 25 4
gpt4 key购买 nike

操作系统:WP8

我正在尝试格式化一个字符串,它是转换器进行绑定(bind)的结果。除了字符串格式数据的本地化外,所有这些都有效,我完全不知道如何合并。微软的文档对此并没有那么清楚,我想知道是否有人可以为我指明正确的方向。

<TextBlock Text="{Binding Date, StringFormat='Received On: {0}', ConverterParameter=shortdatewithyear, Converter={StaticResource DateTimeToTimeConvert}}"/>

这看起来不像是完全想做的事情。

谢谢!

-电源线

最佳答案

在您的特定情况下,我会从转换器中的资源文件中提取字符串,然后 .Net 提供的本地化就可以工作了。这在构建字符串时可能更为重要,并且构建顺序可能会因不同的语言而改变。

您以标准方式创建资源文件 - “MyResource.resx”来存储默认语言的字符串,然后您可以创建名为“MyResource.Fr-fr.resx”的本地化版本(如果您是做法语)。这将在第一个实例中自动加载并搜索字符串。如果找不到,代码将从默认资源文件中提取字符串。这样您就不必翻译所有内容 - 对于 US/GB 拼写差异很有用。

一般来说,一旦你有了这个,你就可以在你的 XAML 中拥有本地化的字符串

添加本地化类:

public class Localize : INotifyPropertyChanged
{
#region INotifyPropertyChanged Members

public event PropertyChangedEventHandler PropertyChanged;
private void NotifyChange(String name)
{
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(name));
}

#endregion

#region 'Public Properties'

//Declarations
private static Resources.MyResources _myResources = new Resources.MyResources();

public Resources.MyResources myResources
{
get { return _myResources; }
set { NotifyChange("MyResources"); }
}

#endregion
}

然后在您的 XAML 中将其添加到您的用户控件的资源中:

<local:Localize x:Key="myResource"
xmlns:local="clr-namespace:MyProject" />

然后就可以使用了:

<TextBlock Text="{Binding myResource.MyString, Source={StaticResource myResource}}"/>

关于c# - XAML 中的 WPF StringFormat 和本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com