Create NSView programmatically in Xamarin Studio

前端 未结 1 1433
失恋的感觉
失恋的感觉 2021-01-24 22:12

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

相关标签:
1条回答
  • 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)

    0 讨论(0)
提交回复
热议问题