在 C# 中将字符串保存到 ResourceDictionary

Saving strings into a ResourceDictionary in C#

每次我用 C# 编程时,我都会将 UI 字符串写入我的 WPF 代码中。我认为这不是编写 UI 字符串的最佳做法。是否可以将它们全部保存到ResourceDictionary中?这样它们都存储在一个文件中而不是代码中。以后更改字符串可能也会更容易。

我怎样才能实现这样的目标?谢谢

无论您使用的是控制台应用程序还是 wpf 或 web,设置都是相同的。您需要做的是添加资源文件。要练习和开始,您可以创建一个控制台应用程序,然后:

  1. 在解决方案资源管理器中双击项目的 "properties" 节点。
  2. 单击 "Resources" 选项卡。
  3. 点击link创建资源文件。
  4. 在“名称”列中输入 "Hello"。这将在代码中用于引用此翻译。在值列中输入 "Hello"。这就是用户将看到的内容。
  5. 请注意,已在属性节点下创建名为 Resources.resx 的文件。
  6. 右键单击属性节点,然后 select 添加 > 新项。 Select 资源文件并将此文件命名为:Resources.fr.resx。 (fr 代表法语)
  7. 在“名称”列中输入 "Hello"。这将在代码中用于引用此翻译。在值列中输入 "Bonjour"。这就是用户将看到的内容。

现在在main方法中添加如下代码:

// Default local on my OS is En (English). If it was French it will say "Bonjour" instead.
Console.WriteLine(Resources.Hello);
// Now we change it to French so you can see how it picks the right string based on the language
// See fr in line below. This will pick up the Resources.fr.resx instead of Resources.resx
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("fr-FR");
Console.WriteLine(Resources.Hello);
Console.ReadKey();

运行 应用程序和输出将是:

你好 卓悦

这在 WPF 中是相同的想法,但是 Console.WriteLine 您将以不同的方式使用它。例如:

Title="{x:Static p:Resources.Hello}" Height="350" Width="525">