我在以下部分中有以下内容:
_favElement = new StyledStringElement (string.Empty);
_favElement.Alignment = UITextAlignment.Center;
if (_room.IsFavourite) {
_favElement.Image = UIImage.FromBundle ("Images/thumbs_up.png");
_favElement.Caption = "Unmark as Favourite";
} else {
_favElement.Image = null;
_favElement.Caption = "Mark as Favourite";
}
_favElement.Tapped += favElement_Tapped;
然后,当我按下元素时,我希望发生以下情况:
private void favElement_Tapped ()
{
if (_room.IsFavourite) {
_favElement.Image = null;
_favElement.Caption = "Mark as Favourite";
} else {
_favElement.Image = UIImage.FromBundle ("Images/thumbs_up.png");
_favElement.Caption = "Unmark as Favourite";
}
_room.IsFavourite = !_room.IsFavourite;
}
但是,点击元素时,图像和文本在实际元素中不会发生变化。是否有刷新方法或必须调用的东西?我也试过改变Tapped上的附件,没有任何变化。后面的属性确实反映了正确的值。
答案 0 :(得分:8)
重新加载UITableView
的另一种方法是使用这样的代码重新加载Element
(从Touch.Unit复制):
if (GetContainerTableView () != null) {
var root = GetImmediateRootElement ();
root.Reload (this, UITableViewRowAnimation.Fade);
}
答案 1 :(得分:6)
假设您的代码在DialogViewController中,请添加此
this.ReloadData();
但在你的情况下,我建议你使用BooleanImageElement