我想根据所选语言切换包含我的应用数据的json文件。
基本上这意味着当语言改变时,将数据uri更改为指向新的uri:
Uri dataUri = new Uri(“ms-appx:///DataModel/SampleData.json”);
我正在使用以下开关:
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentUICulture;
string locale = ci.ToString();
switch (locale)
{
case "fr":
{
Uri dataUri = new Uri("ms-appx:///DataModel/SampleDataFrench.json");
break;
}
case "en":
{
Uri dataUri = new Uri("ms-appx:///DataModel/SampleDataEnglish.json");
}
}
我收到错误:“名称'dataUri'在当前上下文中不存在。我做错了什么以及如何解决这个问题?
答案 0 :(得分:1)
我认为 Sunil Kumar S C 是正确的,您定义的dataUri只能在案例中工作。
关于您的代码的另一个建议是,最好不要使用switch case来做到这一点,因为当您需要支持一种新的文化时,您需要更改代码。
您可以直接在文件名后附加文化,如果特定文化文件不存在,则使用默认文化。因此,当您想要支持更多文化时,您只需要添加一个新文件,而且不需要更改任何代码。
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentUICulture;
string locale = ci.ToString();
Uri dataUri = new Uri(string.Format("ms-appx:///DataModel/SampleData.{0}.json", ci.ToString()));
答案 1 :(得分:0)
嘿,它只是一个可访问性错误。您正在本地为案例定义dataUri。你应该这样做。 希望这有帮助。感谢
Uri dataUri = null;
switch (locale)
{
case "fr":
{
dataUri = new Uri("ms-appx:///DataModel/SampleDataFrench.json");
break;
}
case "en-US":
{
dataUri = new Uri("ms-appx:///DataModel/SampleDataEnglish.json");
break;
}
}
//You can access it now --- dataUri
答案 2 :(得分:0)
Uri变量dataUri = null;此变量位于公共密封类ItemPage:Page
中发布的区域中反序列化json内容