2014-07-04 38 views
6

當我嘗試使用MvvmCross框架將我的Android按鈕的「Enabled」屬性綁定到ViewModel的布爾值時,出現問題,我真的不知道它的起源。將Android按鈕的Enabled屬性與MvvmCross綁定

所以我有一個包含以下兩個性質的視圖模型:

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是通過調用Web服務填充的,所以通過異步方法。我認爲這是爲什麼當綁定被實現時,HasPicture屬性具有錯誤值。但是用我的ViewModel代碼,當ProjectDetailDTO被填充時,HasPicture屬性應該被更新。我的Android視圖中有什麼錯誤嗎?

感謝您的幫助!

回答

9

我想你在這裏看到的是ICommand.CanExecuteEnabled屬性之間的一些互動。有一個關於這對https://github.com/MvvmCross/MvvmCross/issues/729

討論要解決這個問題,嘗試切換結合:

local:MvxBind="Click ShowProjectPicturesCommand;Enabled HasPicture" 

(另請注意,在綁定分隔符是; - 不是,

+0

謝謝您再次爲你的幫助斯圖爾特,用你的線代替我的線'解決了我的問題。 –

相關問題