我正在使用MVVM开发Windows Phone应用程序,并且我想将AppResources用作字符串数据库,以后可以使我本地化该应用程序。我有一个加载弹出窗口,其中显示一些提示。

所以我的数据库就像

  • tip_1记住要运行
  • tip_2找出
  • tip_3依此类推

  • 然后,我希望在代码中设置每次显示加载屏幕时都以新提示为边界的变量。
    所以我的问题是我如何做到这一点。

    我现在使用一个开关盒,它随机取一个数字,然后显示提示。但这意味着每次我将新条目添加到数据库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替换为电话应用程序中具有的资源文件名的名称。

    09-25 17:22