【发布时间】:2014-08-25 12:23:03
【问题描述】:
当我尝试使用 MvvmCross 框架将我的 Android Button 的“启用”属性绑定到我的 ViewModel 的布尔值时遇到问题,我真的不知道它的来源。
所以我有一个 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 是通过调用 Web 服务填充的,因此是通过异步方法填充的。我认为这就是为什么当实现绑定时 HasPicture 属性具有 false 值的原因。但是对于我的 ViewModel 代码,应该在填充 ProjectDetailDTO 时更新 HasPicture 属性。我在 Android 视图中做错了什么吗?
感谢您的帮助!
【问题讨论】:
标签: button binding xamarin.android mvvmcross