I am trying to find a solution to this question I asked earlier: Populate SourceList in Xamarin.Mac app
I am currently trying to implement the GetView
metho
You'll see in XCode that the Table Cell View
objects have an 'Identifier' that you can set. In my case I have 'HeaderCell' and 'DataCell'.
My code looks like this:
public override NSView GetView(NSOutlineView outlineView, NSTableColumn tableColumn, NSObject item)
{
if(IsGroupItem(outlineView, item))
{
return outlineView.MakeView("HeaderCell", this);
}
return outlineView.MakeView("DataCell", this);
}
This will create an appropriate instance of the TableCellView
defined in XCode.
In my case, I use Cocoa bindings rather than a data source, so my views get populated with data automatically. This may be an approach you want to investigate because it is much closer to the WPF/XAML way of databinding. However, it has a steep learning curve and is difficult to debug (like WPF/XAML databinding!).
Instead of simply returning the cell, you could access it's subviews and set them up appropriately. Something like:
var dataView = outlineView.MakeView("DataCell", this);
((NSImageView)dataView.Subviews[0]).Image = // assign an image
((NSTextField)dataView.Subviews[1]).StringValue = // assign your text
return dataView;
(Note: I just typed that from the top of my head, it may not work as-is - but hopefully you get the idea)