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文件中指定它们来填写相应的标签和按钮?
尝试在文件中使用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部分
这是一篇关于这个主题的长达九页的文章的开头。