Скрыть UIView при загрузке просмотра - Xamarin iOS и MvvmCross - PullRequest
1 голос
/ 24 июня 2019

Я пытаюсь скрыть элемент пользовательского интерфейса при загрузке просмотра. Я использую Xamarin iOS и MvvmCross (6.2.3.0). На мой взгляд, я создаю поле uitext и добавляю следующую привязку:

public override void ViewDidLoad()
{
//adding uitextfield
var set - this.CreateBindingSet(MyViewConroller, MyViewModel>();
set.Bind(uitextfield).For("Visibility").To(vm => vm.FieldVisibility).TwoWay().WithConversion("Visibility");
}  

А вот моя модель:

public MyViewModel : MvxViewModel
{
private bool _fieldVisibility;
public bool FieldVisibility
{
get {return _fieldVisibility;}
set {
SetProperty(ref _fieldVisibility, value);
}

public override Task Initialize() {
FieldVisibility = false;
}

Но когда представление загружено, мое поле uitext все еще видно. Я пытался вызвать RaisePropertyChanged, но это не помогло:

private bool _fieldVisibility;
    public bool FieldVisibility
    {
    get {return _fieldVisibility;}
    set {
    SetProperty(ref _fieldVisibility, value);
RaisePropertyChanged(nameof(FieldVisibility));
    }

Это работает, когда я изменяю другое свойство viewmodel и просто вызываю:

private string _otherProperty;
        public string OtherProperty
        {
        get {return _otherProperty;}
        set {
        SetProperty(ref _otherProperty, value);
FieldVisibility = false;
    RaisePropertyChanged(nameof(FieldVisibility));
        }

но я бы хотел, чтобы это поле uitext было скрыто при загрузке просмотра. Можете ли вы предложить какое-либо решение для этого? Буду очень признателен за любую подсказку. Спасибо !!

С наилучшими пожеланиями Кшиштоф

1 Ответ

1 голос
/ 25 июня 2019

В настоящее время мы строго указали привязки для таких вещей:

set.Bind(uitextfield).For(v => v.BindVisible()).To(vm => vm.FieldVisibility);

Здесь вам не нужен конвертер видимости, он должен работать без него.

Не забудьте также позвонить Apply() на вашем наборе привязок.

Также TwoWay() здесь ничего не будет делать, потому что нет целей привязки, которые бы разрешали двустороннюю привязку для видимости UIView.

...