WPF全球化(可能不是)

时间:2011-05-31 03:59:16

标签: c# wpf globalization

我正在尝试使用标签,按钮等构建原型。但是,我确实希望通过外部文件(可能是文本文件或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文件中指定它们以相应地填充标签按钮?

2 个答案:

答案 0 :(得分:1)

尝试在文件中使用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”属性,因此您必须检查控件的类型。 但是,我还强烈建议您学习如何使用资源文件。它是一种普遍接受的处理资源字符串的方法。

答案 1 :(得分:0)

Scott Hanselman刚刚写了一篇可能适合你的博客文章。它是以ASP.NET编写的一个例子,但它明确地不限于它:

Globalization, Internationalization and Localization in ASP.NET MVC 3, JavaScript and jQuery - Part 1

这将开始一篇长达9页的关于该主题的文章。