Size: a a a

Xamarin Developers

2020 December 12

🦉

🦉Sova🦉 in Xamarin Developers
dudu dida
Так то оно так, но типа прежде чем гонять на странном велике, надо хотябы на обычном научиться
*Надо научиться ходить
источник

dd

dudu dida in Xamarin Developers
🦉Sova🦉
*Надо научиться ходить
А еще гуглить и учиться
источник

ЕС

Евгений Сотников... in Xamarin Developers
Всем привет. Возникла проблема с кастомными биндингами в MvvmCross

Следующщий код вылетает с System.NullReferenceException на Apply

           set.Bind(_emailTextField).For("Highlighted").To(vm => vm.IsEmailInvalid).OneWay();
           set.Bind(_passwordTextField).For("Highlighted").To(vm => vm.IsEmailInvalid).OneWay();

           set.Apply();
источник

ЕС

Евгений Сотников... in Xamarin Developers
Сам биндинг и его регистрация выглядит так:

https://pastebin.com/Yseu42kU
источник

ЕС

Евгений Сотников... in Xamarin Developers
Сам краш
источник

А

Андрей in Xamarin Developers
BorderedTextField.BorderedTextFieldHighlightedTargetBinding, биндинг же не пропертя твоей вьюхи
источник

ЕС

Евгений Сотников... in Xamarin Developers
А разве я должен возвращщать биндинг как пропертю вьюхи?
источник

А

Андрей in Xamarin Developers
У тебя в методе FillTargetFactories написано BorderedTextField.BorderedTextFieldHighlightedTargetBinding
источник

А

Андрей in Xamarin Developers
Я немного не понимаю почему)
источник

А

Андрей in Xamarin Developers
Там просто тип биндинга нужен
источник

ЕС

Евгений Сотников... in Xamarin Developers
Я объявил класс биндинга как вложенный
источник

ЕС

Евгений Сотников... in Xamarin Developers
Чтоб если коонтролл станет не нужен то удалить одним файлом
источник

ЕС

Евгений Сотников... in Xamarin Developers
[DesignTimeVisible(true)]
   [Register(nameof(BorderedTextField))]
   public sealed partial class BorderedTextField : UIView
   {
       ....

       public sealed class BorderedTextFieldHighlightedTargetBinding : MvxPropertyInfoTargetBinding<BorderedTextField>
       {
           public override MvxBindingMode DefaultMode => MvxBindingMode.OneWay;

           public BorderedTextFieldHighlightedTargetBinding(object target, PropertyInfo targetPropertyInfo) : base(target, targetPropertyInfo)
           {
           }

           protected override void SetValueImpl(object target, object value)
           {
               var control = target as BorderedTextField;
               if (control != null)
               {
                   control.Highlighted = (bool)value;
               }
           }
       }
   }
источник

А

Андрей in Xamarin Developers
Теперь понятей, а ты уверен, что дело именно в кастомном биндинге?
Комментиил его?
источник

ЕС

Евгений Сотников... in Xamarin Developers
Ну да - без него все собирается
источник

А

Андрей in Xamarin Developers
Да и класс можно сделать внутри другого класса и без модификатора, я не уверен что оно адекватно сработает
источник

ЕС

Евгений Сотников... in Xamarin Developers
Вынес класс биндинга в отдельный файл - все равно падает
источник

А

Андрей in Xamarin Developers
Есть еще варик попробовать вот так
registry.RegisterCustomBindingFactory<BorderedTextField>(“Highlighted”, borderedTextField => new BorderedTextFieldHighlightedTargetBinding(borderedTextField));
источник

А

Андрей in Xamarin Developers
И вместо MvxPropertyInfoTargetBinding можно заюзать MvxTargetBinding
источник

А

Андрей in Xamarin Developers
А вообще, если там есть уже пропертя хайлайтед, тогда зачем кастомный биндинг нужен?
Там ж ван вей все равно
источник