我正在使用MVVM开发Windows Phone应用程序,并且我想将AppResources用作字符串数据库,以后可以使我本地化该应用程序。我有一个加载弹出窗口,其中显示一些提示。
所以我的数据库就像
然后,我希望在代码中设置每次显示加载屏幕时都以新提示为边界的变量。
所以我的问题是我如何做到这一点。
我现在使用一个开关盒,它随机取一个数字,然后显示提示。但这意味着每次我将新条目添加到数据库AppResources中。我必须更新开关。我想在AppResources中搜索,因为不可能使用动态变量名。
我在想像这样的伪代码
Random rnd = new Random();
int TipMax = Convert.ToInt32(AppResources.TipCount);
int i = rnd.Next(1, TipMax);
BoundVariable = Resources(String.Concat("Tip_",i.ToString());
但是我无法做到,有人有解决方案吗?
额外
我找到了ResourceManager类,该类也存在于Windows Phone中,但是无法正常工作。
注意
下面是正确的答案,您应该记住Random()。Next(min,total);的最小值。仅供引用:)
最佳答案
您应该可以将 ResourceManager
类与 GetString
方法一起使用:
var total = int.Parse(AppResources.ResourceManager.GetString("tip_total"));
// generate random number
var number = new Random().Next(total);
var tip = AppResources.ResourceManager.GetString("tip" + number);
这将假定您有一个名为“tip_total”的资源,其中包含已存储的“tips”总数。您也可以迭代遍历它们,直到
GetString
返回null
(在找不到资源时执行此操作)。将上面的
AppResources
替换为电话应用程序中具有的资源文件名的名称。