Предполагам, че най-чистият начин би бил да дефинирате персонализиран атрибут, който да чете от вашите 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