Macos Xamarin NSTableView隐藏列、颜色特定单元格、颜色特定行
我试图在我的项目中实现一个NSTableView,并用特定的数据填充它。这个很好用。但现在,我希望能够隐藏一些列、特定于颜色的单元格或特定于颜色的行。我用java做了一些类似的东西,但我真的不知道在Xamarin:Mac中怎么做 以下是我的代表的代码: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
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){
返回音频文件。计数;
}
}
如果有人能帮我一点忙,我将非常感激
谢谢