Проблема: - локально: MvxLang не удалось связать текст ресурса с TextView, когда он является частью itemtemplate MvxListView в приложении Xamarin используя функцию локализации в MVVMCross.local: MvxLang не удалось связать текст ресурса с TextView, когда он является частью itemtemplate MvxListView в приложении Xamarin
Мое приложение Xamarin.android, используя MVVMCross, используется функция локализации MVVMCross с файлом resx. Запуск образца можно найти здесь: https://github.com/pallaviak1/RestaurantBilling.Droid
Я получаю локализованную строку в коде, используя ниже синтаксис в ViewModel (AllBillsViewModel) BillClickedCommand: -
_dialogService.ShowAlertAsync(string.Format(TextSource.GetText("InformationReceivedMessage"), bill.CustomerEmail, bill.AmountPaid), TextSource.GetText("InformationReceivedHeader"), TextSource.GetText("InformationReceivedButtonText"));
Кроме того, моя главная страница вид где местные: mvxLang является атрибутом кнопки , который показывает текст кнопки из ресурса выбранной культуры, также хорошо работает.
<Button ... local:MvxLang="Text ViewBillsResourceText" local:MvxBind="Click NavigateAllBills" />
Проблема: - Однако, когда я использую MvxLang в элементах управления, которые являются частью шаблона элемента из MvxListView Control локализованная строка пустой (не заполняется).
файл: - RestaurantBilling.Droid \ RestaurantBilling.Droid \ Resources \ расположение \ ListItem_Bill.axml
управления, которая является частью зрения шаблона пункт выглядит следующим образом: -
<TextView android:layout_alignParentBottom="true"
android:layout_marginLeft="50dp"
android:layout_marginRight="16dp"
android:layout_width="90dp"
android:layout_height="wrap_content"
local:MvxLang="Text CustomerEmailTextView" />
Управление списком рассылки выглядит следующим образом: -
<Mvx.MvxListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
local:MvxBind="ItemsSource AllBills; ItemClick BillClickedCommand"
local:MvxItemTemplate="@layout/listitem_bill" />
Ключ ресурса CustomerEmailTextView присутствует в файлах resx как имя : AllBillsViewModel.CustomerEmailTextView, значение: «Электронная почта клиента в США».
Просто добавьте мой код локализации: - Файлы ресурсов присутствуют в библиотеке MVVMCross.Localization, ссылка на которую добавлена в библиотеку RestaurantBilling.core, а также проект android.
код в ядре, App.cs файл, как показано ниже: -
Mvx.RegisterSingleton<IMvxTextProvider>
(new ResxTextProvider(Strings.ResourceManager, currentCulture));
BaseViewModel имеет код ниже: -
public IMvxLanguageBinder TextSource =>
new MvxLanguageBinder("", GetType().Name);
Получение предупреждения в визуальном окне вывода студии, как показано ниже:
[0:] MvxBind:Warning: 9.78 Unable to bind: source property source not found Property:TextSource on Bill
02-10 07:41:52.020 I/MvxBind (4357): 9.78 Unable to bind: source property source not found Property:TextSource on Bill
Я не смог найти достаточную помощь на официальном веб-сайте MVVMCross, также не смог найти много точек обсуждения на том же самом. То же самое работает в образце, загруженном «Мои поезда», когда он передается из тренинга по множественной силе.
Пожалуйста, помогите.