Я бы предположил, что самым чистым способом было бы определить настраиваемый атрибут, который будет считываться из ваших ресурсов PCL через ResourceManager
.
Я работаю с MvvmCross, и он работает с парсером привязки пользовательского языка:
public class CustomLanguageBindingParser : MvxBindingParser , IMvxLanguageBindingParser
{
protected override MvxSerializableBindingDescription ParseBindingDescription()
{
this.SkipWhitespace();
string resourceName = (string)this.ReadValue();
// Pass the resource name in as the parameter on the StringResourceConverter.
return new MvxSerializableBindingDescription
{
Converter = "StringResource",
ConverterParameter = resourceName,
Path = null,
Mode = MvxBindingMode.OneTime
};
}
public string DefaultConverterName { get; set; }
public string DefaultTextSourceName { get; set; }
}
И преобразователь:
public class StringResourceConverter : IMvxValueConverter
{
private static ResourceManager manager = new ResourceManager(typeof(AppResources));
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// Ignore value. We are using parameter only.
return manager.GetString((string)parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Зарегистрируйте свой парсер в своем классе MvxAndroidSetup:
protected override void InitializeIoC()
{
base.InitializeIoC();
Mvx.RegisterType<IMvxLanguageBindingParser, CustomLanguageBindingParser>();
}
В вашем .axml определите пространство имен xmlns:local="http://schemas.android.com/apk/res-auto"
И вызвать ресурс. Например, в TextView: local:MvxLang="Text MyResourceKey"
Это подключается к системе привязки MvvmCross. Первая часть «Текст» определяет целевое свойство, а вторая часть анализируется как ключ ресурса. Синтаксический анализатор языковой привязки переводит это в привязку с вашим пользовательским преобразователем и ключом в качестве параметра преобразователя. Преобразователь выполняет поиск строки на основе параметра преобразователя.
person
RandomEngy
schedule
09.11.2015