Size: a a a

Xamarin Developers

2021 January 24

I

Ivan M in Xamarin Developers
потом когда придёт очередь Android, можно порефакторить чутка и будет ок
источник

I

Ivan M in Xamarin Developers
MVVM не обязательно везде иметь bindings чтобы получать его преимущества, я на Андроиде заленился например настраивать их для таблицы (RecyclerView) и просто "руками" подхватываю из View Model
источник

I

Ivan M in Xamarin Developers
конечно это не чистый MVVM, но кого волнует если работает )
источник

I

Ivan M in Xamarin Developers
главное это чтобы View Model слой был независим от платформы на которой он работает, остальное уже всё красота и пуризм
источник

KD

Kolya Dudla in Xamarin Developers
Ivan M
главное это чтобы View Model слой был независим от платформы на которой он работает, остальное уже всё красота и пуризм
Ага понял, огромное спасибо, а такой вопрос а как можно обойтись без биндингов в ios? А то я ноль в этом
источник

I

Ivan M in Xamarin Developers
В iOS есть MVC встроенный в CocoaTouch – там у всего delegates и data sources. Обычный iOS разработчик на Obj-C/Swift будет их напрямую цеплять к модели данных – запросам к БД, в сеть и т.д.

И на нативном iOS UI state будут хранить внутри прямо UI параметров как например, somBtn.enabled = false. Чтобы сделать MVVM (будь то C# или нативные языки), нужно добавить прослойку ViewModel и хранить UI state в ней: someBtn.enabled = ViewModel.SomeBtnEnabled.

Когда делаешь это c каким фреймворком с bindings, они берут на себя обновление (two-way, one-way bindings): поменялось в VM, меняется и UI. Если делать без них – придётся руками вбивать getters и setters. Если интерфейс не тяжёлый, то для обновления View из ViewModel делаешь метод в каждом iOS view Controller типа UpdateView() и там пробегаешь по всем элементам интерфейса, подхватывая в них данные из ViewModel. ViewModel шлёт оповещение (она не знает ничего о View) что нужно обновиться и View в одном методе всё обновляет.

Когда нужно из View обновить данные во ViewModel, то просто используешь айосные delegates и из них напрямую обращаешься к полям VM текущего View.

Чтобы сделать VM на уровне проекта, посмотри простые примеры типа Playgrounds в MvvmCross – брать его необязательно, но станет понятнее как они делят код чтобы можно было переиспользовать.

Вкратце, там Solution на несколько проектов: в центре всего "Core" проект библиотеки на .NET Standard 2.0 которую на каждой платформе использует проект этой платформы. Model и ViewModel слои в этой библиотеке, поэтому она независима от платформы и ничего не знает ни про CocoaTouch/UIKit, ни про Android SDK. Там чистые данные, но подготовленные так чтобы интерфейсу было легко их подхватить.
источник

I

Ivan M in Xamarin Developers
как-то так ) пардон, нужно убежать афк
источник

KD

Kolya Dudla in Xamarin Developers
Ivan M
как-то так ) пардон, нужно убежать афк
спасибо мен) ты мне помог очень )
источник

AZ

Alexey Zaburez in Xamarin Developers
Добрый вечер, возможно ли поместить один элемент поверх другого, но чтобы верхний не перекрывал нажатие на нижний?
источник

MO

Mr. Onion in Xamarin Developers
Alexey Zaburez
Добрый вечер, возможно ли поместить один элемент поверх другого, но чтобы верхний не перекрывал нажатие на нижний?
вроде можно укзазать такую штуку как isinputtransparent
источник

MO

Mr. Onion in Xamarin Developers
или чота такое
источник

AZ

Alexey Zaburez in Xamarin Developers
У лейбла такого нет, по крайней мере студия не подсказывает)
источник

MO

Mr. Onion in Xamarin Developers
Alexey Zaburez
У лейбла такого нет, по крайней мере студия не подсказывает)
просто inputtransparent гляньте
источник

AZ

Alexey Zaburez in Xamarin Developers
Mr. Onion
просто inputtransparent гляньте
Заработало, спасибо!
источник

MO

Mr. Onion in Xamarin Developers
Alexey Zaburez
Заработало, спасибо!
буквально только сегодня узнал про такую шнягу)
источник

A

Alex in Xamarin Developers
Всем привет! такой вопрос:
Есть TabbedPage с 4 страницами
На одной из страниц есть список ListView с биндингом на модель (допустим List<Product> Products)
При выборе айтема на ListView я открываю новую страницу
var item = e.Item as Product;
await Navigation.PushModalAsync(new DetailPage(item), true);
Однако эта страница открывается так, что перекрывает весь нижний Tab
(открывается на всю страницу),
как сделать так, чтобы Tab всегда был?
источник

T

Tiotenshi in Xamarin Developers
Alex
Всем привет! такой вопрос:
Есть TabbedPage с 4 страницами
На одной из страниц есть список ListView с биндингом на модель (допустим List<Product> Products)
При выборе айтема на ListView я открываю новую страницу
var item = e.Item as Product;
await Navigation.PushModalAsync(new DetailPage(item), true);
Однако эта страница открывается так, что перекрывает весь нижний Tab
(открывается на всю страницу),
как сделать так, чтобы Tab всегда был?
Стек этой табы должен быть в навипейдже
источник

IS

Ilya Sarzhanov in Xamarin Developers
Alex
Всем привет! такой вопрос:
Есть TabbedPage с 4 страницами
На одной из страниц есть список ListView с биндингом на модель (допустим List<Product> Products)
При выборе айтема на ListView я открываю новую страницу
var item = e.Item as Product;
await Navigation.PushModalAsync(new DetailPage(item), true);
Однако эта страница открывается так, что перекрывает весь нижний Tab
(открывается на всю страницу),
как сделать так, чтобы Tab всегда был?
Ну или использовать какой нибудь контент  view
источник

A

Alex in Xamarin Developers
Понял, спасибо
источник

VK

Vlad Khasenevich in Xamarin Developers
Разобрались?
источник