MonoMac TableView不调用GetObjectData

时间:2014-10-14 04:29:35

标签: nstableview monomac

我努力让NSTableView在MonoMac中工作(作为System.Windows.Forms.ListView的替代品),我很困惑为什么我的GetObjectData方法没有被调用。我已经进行了调试打印,并且" GetRowCount"我的NSTableViewSource中的方法被正确调用,但它永远不会成为GetObjectData。我得到一个具有正确行数的表,甚至是选择工作,但行中没有数据。 ReloadData也有效,因为还有另一个GetRowCount调用。

以下是代码:

public class MyTableViewSource : NSTableViewSource
{
    //... (constructor, etc.)

    public override int GetRowCount(NSTableView table)
    {
        Debug.Print ("NumberOfRowsInTableView = {0}", mSFList.RowCount);
        return mSFList.RowCount;
    }

    // TODO: Why is this not being called!!!
    public override NSObject GetObjectValue(NSTableView table, NSTableColumn col, int row)
    {
        Debug.Print ("Getting data for row {0}, column titled {1}", row, col.HeaderCell.Title);
        // Get the column index.
        int colIndex;
        NSTableColumn[] cols = table.TableColumns();
        for (colIndex = 0; colIndex < cols.Length; colIndex++)
            if (cols[colIndex] == col) break;
        if (colIndex >= cols.Length) return null;
        return new NSString(mSFList[row,colIndex]);
    }

我甚至尝试使用此导出功能,但我不知道我的字符串是否正确。

    [Export("tableView:getObjectValue:forTableColumn:row:")]
    public NSObject MyGetObjectValue(NSTableView table, NSTableColumn col, int row)
    {
        return GetObjectValue(table, col, row);
    }

Debug输出始终非常一致:

NumberOfRowsInTableView = 2

有什么想法吗?我想知道我是否在XCode方面做了一切,但我没有把桌子弄得一团糟,我也不知道如何阻止这种方法。

Xamarin Studio 5.5,但我现在将Mono保留在3.8.0版本(3.10与我使用的某些Windows代码有问题)。

1 个答案:

答案 0 :(得分:0)

继上面的评论之后,我重新尝试了整个设置,删除了旧表并插入了新表,现在它可以工作了。虽然我使用的是ObjectValueForTableColumn而不是getObjectValue。

我使用了以下link提供的步骤(致谢:Andrew J. Brehm)