Целевое назначение MvvmCross CreateBindingSet - PullRequest
1 голос
/ 20 февраля 2020

Итак, недавно я столкнулся с интересным сценарием от одного из моих товарищей по команде.

В настоящее время они работают над проектом Xamarin и используют MvvmCross. Они решили, что хотели бы использовать CreateBindingSet исключительно для привязок непосредственно в xaml.

Мне это кажется анти-паттерном для Mvvm. Он тесно связывает исходный код с моделью представления и добавляет дополнительную сложность платформе, которая предназначена для привязки к xaml.

Я пытаюсь понять, является ли использование этой функции в заднем коде хорошей идеей или нет, но я не могу разобраться в этом в документации.

Может кто-нибудь сказать мне, для чего предназначен предполагаемый вариант использования CreateBindingSet?

1 Ответ

3 голосов
/ 20 февраля 2020

В дополнение к предоставлению оператора связывания текстового формата, который может быть легко включен в файлы макета xml, MvvmCross также предоставляет синтаксис на основе C#, позволяющий легко создавать привязки с использованием кода.

Это Синтаксис привязки называется Свободные привязки.

Например,

MvvmCross создает связь между View и ViewModel с помощью следующего кода:

var set = this.CreateBindingSet<MyView, MyViewModel>();

Затем вы можете установить привязку данных с помощью методов For и To:

set.Bind(LabelUserName).For(x => x.Text).To(vm => vm.UserName);

Используя свободный синтаксис, мы можем продолжить указывать тип привязки, такой как OneWay, и TwoWay, et c, например:

set.Bind(LabelUserName).For(x => x.Text).To(vm => vm.UserName).TwoWay();

Свободное связывание особенно полезно на платформах iOS и OSX, где форматы макета Xml не легко редактируются человеком (в iOS и платформа MACOS такого файла xml не существует, поэтому нам нужно установить привязку в коде.)

Для получения более подробной информации вы можете проверить https://www.mvvmcross.com/documentation/fundamentals/data-binding .

...