2012-03-20 6 views
3

再描画/更新されていません。MonoTouchでのダイアログ要素は、私は、セクションで、次のしている自分自身

  _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; 
     } 

をしかし、画像を要素がタップされたときに実際の要素でテキストは変化しません。リフレッシュ方法などが必要ですか?私はまた、タップのアクセサリーを変更しようとしましたが、何も変わりません。背後のプロパティは正しい値を反映します。

答えて

6

この

this.ReloadData(); 

を追加し、あなたのコードはDialogViewControllerであると仮定しますが、あなたの場合には、私はあなたがUITableViewをリロードするBooleanImageElement

+0

最終的に 'BooleanImageElement'を使用すると、修正を待つか(またはMT.Dのコピーにパッチを適用してください):https://bugzilla.xamarin.com/show_bug.cgi?id=3970#c2 – poupou

+0

アップデートありがとう – Janub

8

に代替手段を使用することをお勧めしますが、このようなElement使用してコードをリロードすることです(Touch.Unitからコピーされました):

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

まさに私が必要としたものです。ありがとうございます。 – BRogers

関連する問題