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

Dyl*_*lan 3 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;
Run Code Online (Sandbox Code Playgroud)

然后,当我按下元素时,我希望发生以下情况:

        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;
        }
Run Code Online (Sandbox Code Playgroud)

但是,当点击元素时,图像和文本在实际元素中不会改变.是否有刷新方法或必须调用的东西?我也试过改变Tapped上的附件,没有任何变化.后面的属性确实反映了正确的值.

pou*_*pou 8

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

if (GetContainerTableView () != null) {
    var root = GetImmediateRootElement ();
    root.Reload (this, UITableViewRowAnimation.Fade);
}
Run Code Online (Sandbox Code Playgroud)


Jan*_*nub 6

假设你的代码在DialogViewController中,添加它

this.ReloadData();
Run Code Online (Sandbox Code Playgroud)

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