Mvvmcross:与 MvxLang 绑定的文本格式

Mvvmcross: Text format binding with MvxLang

我正在构建原生 Xamarin 应用程序,我正在使用 Mvvmcross 来完成它。这是一个非常好的工具,但我仍在了解它的工作原理。

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

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

此处将 Testclass.Name 变量与格式绑定,因此结果将为

Line: TestName

现在我想做同样的事情,但还要计算 translation for Line:。所以通常要进行翻译,您会执行以下操作。

local:MvxLang="Text Line_Label"

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

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

但不是这样的。有人知道这是否可行以及如何实现吗?

使用西藏绑定local:MvxBind。假设您有:

  1. BaseViewModel.cs

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

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

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

    {
       "MyLabel" : "Your name:"
    }
    

答案:那么Android布局axml文件将包含绑定

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

我不知道如何使用 local:MvxLang 执行此操作,但上面的代码可以完成这项工作:)