WPF全球化(也许不是)

本文关键字:也许 全球化 WPF | 更新日期: 2023-09-27 17:57:56

我正在尝试构建一个带有标签、按钮等的原型。但是,我确实希望通过外部文件(可能是文本文件或excel文件)自定义标签或按钮中的文本。我怎样才能做到这一点?

目前,我正在尝试使用以下格式的CSV文件。

仪表板标题,仪表板框1列名,框1按钮1,下一个

在我的代码中,我将它们读入文本字段,如下所示。

string[] lines = File.ReadAllLines("Dashboard.csv");
for (int i = 0; i < lines.Length; i++)
{
    string currentLine = lines[i];
    string[] lineValues = currentLine.Split(',');
    switch (i)
    {
        case 0: dashboardTitle.Content = lineValues[1];
        case 1: box1ColName.Content = lineValues[1];
        case 2: button1.Content = lineValues[1];
    }
}

我现在担心的是,随着字段(元素)数量的增长。我不得不将开关部分扩展到案例100?我如何在CSV文件中指定它们来填写相应的标签和按钮?

WPF全球化(也许不是)

尝试在文件中使用name=value格式。

e.g. 

button1="我的名字叫button1"
label2="这是一个标签"

将这些值加载到字典中

Dictionary<string, string> d = new Dictionary<string, string>();    
d.Add("button1", "My name is button1");    
d.Add("label2", "This is a label");    

然后可以执行以下算法。遍历表单上的所有组件。如果组件名称与字典键匹配,请设置相应的值。例如:

  Control.ControlCollection coll = this.Controls;
  foreach(Control c in coll) 
  {
    if(c != null)
    {
       if (d.ContainsKey(c.Name))
       {
         c.Text = d[c.Name];
       }
    }
  }

另一种查找控件的方法是使用:
Control.ControlCollection.Find方法按名称搜索控件要容易得多。

但是,请注意,并非所有控件都具有".Text"属性,因此您必须检查控件的类型。不过,我也强烈建议您学习如何使用资源文件。这是一种常见的处理资源字符串的方法。

Scott Hanselman最近刚刚写了一篇可能适合你的博客文章。它是以ASP.NET为例编写的,但显然不限于此:

ASP.NET MVC 3、JavaScript和jQuery中的全球化、国际化和本地化-第1部分

这是一篇关于这个主题的长达九页的文章的开头。