MonoTouch对话框元素不会自行更新/重新绘制

时间:2012-03-20 13:25:22

标签: xamarin.ios monotouch.dialog

我在以下部分中有以下内容:

            _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上的附件,没有任何变化。后面的属性确实反映了正确的值。

2 个答案:

答案 0 :(得分:8)

重新加载UITableView的另一种方法是使用这样的代码重新加载Element(从Touch.Unit复制):

if (GetContainerTableView () != null) {
    var root = GetImmediateRootElement ();
    root.Reload (this, UITableViewRowAnimation.Fade);
}

答案 1 :(得分:6)

假设您的代码在DialogViewController中,请添加此

this.ReloadData();

但在你的情况下,我建议你使用BooleanImageElement