Macos Xamarin NSTableView隐藏列、颜色特定单元格、颜色特定行

Macos Xamarin NSTableView隐藏列、颜色特定单元格、颜色特定行,macos,colors,xamarin,nstableview,Macos,Colors,Xamarin,Nstableview,我试图在我的项目中实现一个NSTableView,并用特定的数据填充它。这个很好用。但现在,我希望能够隐藏一些列、特定于颜色的单元格或特定于颜色的行。我用java做了一些类似的东西,但我真的不知道在Xamarin:Mac中怎么做 以下是我的代表的代码: public class Mp3FileTableDelegate : NSTableViewDelegate { private const string CellIdentifier = "FileCell"; priva

我试图在我的项目中实现一个NSTableView,并用特定的数据填充它。这个很好用。但现在,我希望能够隐藏一些列、特定于颜色的单元格或特定于颜色的行。我用java做了一些类似的东西,但我真的不知道在Xamarin:Mac中怎么做

以下是我的代表的代码:

public class Mp3FileTableDelegate : NSTableViewDelegate {

    private const string CellIdentifier = "FileCell";

    private Mp3FileDataSource DataSource;

    public Mp3FileTableDelegate (Mp3FileDataSource datasource) {
        this.DataSource = datasource;
    }

    public override NSView GetViewForItem (NSTableView tableView, NSTableColumn tableColumn, nint row) {
        // This pattern allows you reuse existing views when they are no-longer in use.
        // If the returned view is null, you instance up a new view
        // If a non-null view is returned, you modify it enough to reflect the new data
        NSTextField view = (NSTextField)tableView.MakeView (CellIdentifier, this);
        if (view == null) {
            view = new NSTextField ();
            view.Identifier = CellIdentifier;
            view.BackgroundColor = NSColor.Clear;
            view.Bordered = false;
            view.Selectable = false;
            view.Editable = true;
            view.EditingEnded += (sender, e) => {
                SetNewValueInMp3File (DataSource.AudioFiles [(int)row], tableColumn, view.StringValue);
            };
        }

        AudioFile audioFile = DataSource.AudioFiles [(int)row];

        // Setup view based on the column selected
        switch (tableColumn.Title) {
        case "Path":
            view.StringValue = audioFile.getPathWithFilename ();
            break;
        }
        if (audioFile.GetType () == typeof(Mp3File)) {
            Mp3File mp3File = (Mp3File)audioFile;

            switch (tableColumn.Title) {
            case "Artist":
                view.StringValue = mp3File.Artist;
                break;
            case "Title":
                view.StringValue = mp3File.Title;
                break;
            case "Album":
                view.StringValue = mp3File.Album;
                break;
            case "BPM":
                view.StringValue = mp3File.BPM;
                break;
            case "Comment":
                view.StringValue = mp3File.Comment;
                break;
            case "Year":
                view.StringValue = mp3File.Year;
                break;
            case "Key":
                view.StringValue = mp3File.InitialKey;
                break;
            case "Quality":
                view.StringValue = mp3File.Album;
                break;
            case "Length":
                view.StringValue = mp3File.Album;
                break;
            }
        }
        return view;
    }


    private void SetNewValueInMp3File (AudioFile file, NSTableColumn tableColumn, String value) {

        if (file.GetType () == typeof(Mp3File)) {
            Mp3File mp3File = (Mp3File)file;

            switch (tableColumn.Title) {
            case "Artist":
                mp3File.Artist = value;
                break;
            case "Title":
                mp3File.Title = value;
                break;
            case "Album":
                mp3File.Album = value;
                break;
            case "BPM":
                mp3File.BPM = value;
                break;
            case "Comment":
                mp3File.Comment = value;
                break;
            case "Year":
                mp3File.Year = value;
                break;
            case "Key":
                mp3File.InitialKey = value;
                break;
            }
        }
    }
}
下面是我的数据源:

    public class Mp3FileDataSource  : NSTableViewDataSource {

    public List<AudioFile> AudioFiles = new List<AudioFile> ();

    public Mp3FileDataSource () {

    }

    public override nint GetRowCount (NSTableView tableView) {
        return AudioFiles.Count;
    }
}
公共类Mp3FileDataSource:NSTableViewDataSource{ 公共列表音频文件=新列表(); 公共Mp3FileDataSource(){ } 公共覆盖nint GetRowCount(NSTableView tableView){ 返回音频文件。计数; } } 如果有人能帮我一点忙,我将非常感激

谢谢