Привязка свойства Enabled кнопки Android с помощью MvvmCross

у меня проблема, когда я пытаюсь привязать свойство "Enabled" моей кнопки Android к логическому значению моей ViewModel с помощью фреймворка MvvmCross, и я действительно не знаю его происхождения.

Итак, у меня есть ViewModel, который содержит два следующих свойства:

private ProjectDetailDTO _projectDetail;
    public ProjectDetailDTO ProjectDetail
    {
        get { return this._projectDetail; }
        set 
        { 
            _projectDetail = value; 
            RaisePropertyChanged(() => ProjectDetail);
            RaisePropertyChanged(() => HasPicture);
        }
    }

    private bool _hasPicture;
    public bool HasPicture
    {
        get { return ((this.ProjectDetail != null) && !String.IsNullOrEmpty(this.ProjectDetail.Pictures)); }
        set { _hasPicture = value;
            RaisePropertyChanged(() => HasPicture); 
        }
    }

Как вы понимаете, моя кнопка привязана к свойству HasPicture. Поэтому у меня есть следующий код для моей кнопки в моем .axml файл :

<Button
    local:MvxLang="Text LblSeePicturesValue"
    local:MvxBind="Enabled HasPicture,Click ShowProjectPicturesCommand"
    android:id="@+id/buttonPictures"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" />

Я не думаю, что это ViewModel проблема, потому что мое приложение WP хорошо работает с этим кодом. Фактически, мой ProjectDetailDTO заполняется вызовом веб-службы, поэтому асинхронным методом. Я думаю, именно поэтому, когда привязка реализована, свойство HasPicture имеет значение false. Но с моим кодом ViewModel свойство HasPicture должно обновляться при заполнении ProjectDetailDTO. Есть ли что-то, что я сделал неправильно в моем представлении Android?

Спасибо за любую помощь !

1 ответов


Я думаю, что вы видите здесь какое-то взаимодействие между ICommand.CanExecute и Enabled собственность. Есть дискуссия об этом на https://github.com/MvvmCross/MvvmCross/issues/729

чтобы обойти это, попробуйте переключить привязку на:

local:MvxBind="Click ShowProjectPicturesCommand;Enabled HasPicture"

(также обратите внимание, что разделителем в привязках является ; - не ,)