Mvvmcross:与MvxLang绑定的文本格式

时间:2017-09-29 14:36:19

标签: xamarin translation mvvmcross

我正在构建一个原生的Xamarin应用程序,我正在使用 Mvvmcross 来执行此操作。这是一个非常好的工具,但我仍然在学习它是如何工作的。

我在文档中发现yould可以使用绑定执行以下操作:

local:MvxBind="Text Format('Line: {0}', Line.Name)"

这里使用格式绑定Testclass.Name变量,结果将是

  

行:TestName

现在我想做同样的事情,但也要计算Line:翻译。通常,对于翻译,您可以执行以下操作。

local:MvxLang="Text Line_Label"

所以我的想法是做这样的事情:

local:MvxLang="Text Format('{0}{1}', Line_Label, Line.Name)"

但它并没有像这样工作。有没有人知道这是否可能以及如何?

1 个答案:

答案 0 :(得分:0)

使用西藏与当地绑定:MvxBind。让我们假设你有:

  1. BaseViewModel.cs

    public abstract class BaseViewModel : MvxViewModel
    {
        public IMvxLanguageBinder TextSource
        {
            get
            {
                return new MvxLanguageBinder(
                    Constants.GeneralNamespace,
                    GetType().Name);
            }
        }
    }
    
  2. MainViewModel.cs继承自BaseViewModel,具有字符串属性Name:

    public string Name => "Radek";
    
  3. TextProviderBuilder就像在Stuart的N + 1天(第21期)https://www.youtube.com/watch?v=VkxHtbJ_Tlk

  4. 带有" MyLabel"的JSON翻译文件键

    {
       "MyLabel" : "Your name:"
    }
    
  5. 答案:然后Android布局axml文件将包含绑定

        local:MvxBind="Text Language(TextSource,'MyLabel') + ' ' + Name; Click NextCommand"
    

    我不知道如何使用local:MvxLang,但上面的代码完成了这项工作:)