Я написал простое словарное приложение с одной страницей XAML, затем решил поместить записи и переводы в отдельные представления с их собственными моделями ViewmModels, и началось самое интересное.
В принципе мне удалось заставить все работать, но он просто показывает мне эти надоедливые ошибки привязки XAML. Я не знаю почему, ИИ поглупел в этом, буду очень признателен за помощь!
EntryModel имеет свойства Header и Subheader
Модель перевода имеет свои свойства
Ошибки выглядят следующим образом:
Контекст данных подсчета серьезности Путь привязки Целевой целевой тип Описание Строка файла Проект Ошибка 50. Заголовок EntryViewModel Label.Text String Свойство «Header» не найдено в «dosham.ViewModels.EntryViewModel», целевое свойство: «Microsoft.Maui.Controls.Label.Text» C:\Users\x.dr\source\repos\ movsar\chldr\src\chldr_maui\Views\EntryView.xaml 11 дошам Ошибка 50. Подзаголовок EntryViewModel Label.Text String Свойство «Подзаголовок» не найдено в «dosham.ViewModels.EntryViewModel», целевое свойство: «Microsoft.Maui.Controls.Label.Text» C:\Users\x.dr\source\repos\ movsar\chldr\src\chldr_maui\Views\EntryView.xaml 14 дошам Ошибка 50. Переводы EntryViewModel StackLayout.ItemsSource Свойство IEnumerable «Translations» не найдено в «dosham.ViewModels.EntryViewModel», целевое свойство: «Microsoft.Maui.Controls.StackLayout.ItemsSource» C:\Users\x.dr\source\repos\ movsar\chldr\src\chldr_maui\Views\EntryView.xaml 18 дошам Ошибка 50 EntryViewModel. EntryView.Entry EntryModel «dosham.ViewModels.EntryViewModel» невозможно преобразовать в тип «chldr_data.DatabaseObjects.Models.EntryModel» C:\Users\x.dr\source\repos\movsar\chldr\src\chldr_maui\Pages\MainPage. xaml 24 дошама Я вижу, что он говорит, что не может найти заголовок и подзаголовок в моей ViewModel, но он должен искать их не в ViewModel, а в моих моделях ввода и перевода из ViewModel. Как мне это сказать, не нарушая привязки, которые сейчас работают?
Кроме того, если у вас есть лучшие предложения по организации кода, мы будем рады вашим советам.
Вот код:
Главная страница
-- Посмотреть
-- Код
общедоступный частичный класс MainPage: ContentPage { публичная главная страница() { ИнициализироватьКомпонент(); BindingContext = App.Services.GetRequiredService(); } } -- Модель просмотра
публичный класс MainPageViewModel: ReactiveObject { общедоступный IEnumerable FilteredEntries { получить => _filteredEntries; set => this.RaiseAndSetIfChanged(ref _filteredEntries, value); } .... EntryView
-- Посмотреть
-- Код
публичный частичный класс EntryView: ContentView { частная EntryViewModel _viewModel; общедоступный статический только для чтения BindableProperty EntryProperty = BindableProperty.Create(nameof(_viewModel.Entry), typeof(EntryModel), typeof(EntryView)); общедоступный EntryView() { _viewModel = App.Services.GetRequiredService(); BindingContext = _viewModel; ИнициализироватьКомпонент(); } } -- Модель просмотра
общедоступный класс EntryViewModel: ViewModelBase { #region Свойства, действия и конструкторы общественная запись EntryModel {получить; набор; } ... } Просмотр перевода
-- Посмотреть
-- Код
публичный частичный класс TranslationView: ContentView { частный только для чтения TranslationViewModel _viewModel; общедоступный статический только для чтения BindableProperty TranslationProperty = BindableProperty.Create(nameof(_viewModel.Translation), typeof(TranslationModel), typeof(TranslationView)); общедоступный TranslationView() { _viewModel = App.Services.GetRequiredService(); BindingContext = _viewModel; ИнициализироватьКомпонент(); } } -- Модель просмотра
публичный класс TranslationViewModel: ViewModelBase { public TranslationViewModel (ContentStore contentStore, UserStore userStore): база (contentStore, userStore) { } общественный TranslationModel Translation {get; набор; } .... } Вот изображение:
