メインメニューを開く

差分

Xamarin.MacのNSTableViewでNSTableViewSourceを使う

887 バイト追加, 2015年3月27日 (金) 08:15
***NSTextFieldCell
次にデータソースの以下のメソッドをオーバーライドし「true」を返すようにする。次にデータソースの以下のShouldEditTableColumnメソッドをオーバーライドし「true」を返すようにする。
前述のEditableのチェックをしておくことでこのメソッドが呼ばれるようになり、このメソッドでtrueを返すと実際に編集が可能な状態となるようだ。
<source lang="csharp">
return true;
}
}
</source>
 
上記のShouldEditTableColumnメソッドのみでは編集はできるが、編集終了後に値が反映されず、編集前の状態に戻ってしまう。
そこで以下のSetObjectValueメソッドもオーバーライドする。
<source lang="csharp">
public class StudyTableViewSource : NSTableViewSource, IList<Study>
{
// 〜〜〜省略〜〜〜
 
public override void SetObjectValue(NSTableView tableView, NSObject theObject, NSTableColumn tableColumn, int row)
{
var item = Items[row];
var type = typeof(Study);
var prop = type.GetProperty(tableColumn.Identifier, BindingFlags.Public | BindingFlags.Instance);
if (prop == null)
{
return;
}
prop.SetValue(item, theObject.ToString());
}
}
</source>
匿名利用者