2017-02-10 26 views
1

Проблема: - локально: 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, также не смог найти много точек обсуждения на том же самом. То же самое работает в образце, загруженном «Мои поезда», когда он передается из тренинга по множественной силе.

Пожалуйста, помогите.

ответ

2

проблема есть. Ссылка: How to bind ItemClick in MvxListView in MvxListView

Этот вопрос о связи несколько похож. Я разрешил проблему ниже,

независимо от свойства TextSource, которое я добавил в viewModel, мне нужно добавить Bill.CS класс, который является модель

public IMvxLanguageBinder TextSource 
    { 
     get { 
      //Mvx.Trace("****************TextSource get in bill.cs**************************"); 
      return new MvxLanguageBinder("", GetType().Name); 
     } 
    } 

Затем ключ текст ресурсов выглядит следующим образом: -

Bill.CustomerEmailTextView 

Это своего рода обходной путь, на самом деле BaseViewModel имеет TextSource свойство, однако это не полезно в случае пункта шаблон кейс.

Пожалуйста, дайте мне знать, если у вас есть лучшее решение, потому что мы являемся своего рода смешивающей моделью и свойствами модели.

 Смежные вопросы

  • Нет связанных вопросов^_^