2016-11-10 145 views
0

如何更改NSTable选定的行背景颜色?更改NSTableView选定行的高亮颜色

这里不错answer,但它是适合视图。

现在,我所看到的是,我可以改变选择的高亮风格:

MyTAble.SelectionHighlightStyle = NSTableViewSelectionHighlightStyle.Regular; 

但这里只有3个选项;

None = -1L, 
     Regular, 
     SourceList 

我曾尝试以下解决方案:

patientListDelegate.SelectionChanged += (o, e) => { 
         var r = PatientTableView.SelectedRow; 
         var v = PatientTableView.GetRowView (r, false); 
         v.Emphasized = false; 
        }; 

它工作正常,但如果我最小化,然后打开应用程序再次,仍然显示蓝色

回答

0

我发现在Objective-C

答案

Change selection color on view-based NSTableView

这里是c#实现entation:

内委托:

public override NSTableRowView CoreGetRowView (NSTableView tableView, nint row) 
     { 
      var rowView = tableView.MakeView ("row", this); 
      if (rowView == null) { 
       rowView = new PatientTableRow(); 
       rowView.Identifier = "row"; 
      } 
      return rowView as NSTableRowView; 
     } 

和自定义行:

public class PatientTableRow : NSTableRowView 
    { 
     public override void DrawSelection (CGRect dirtyRect) 
     { 
      if (SelectionHighlightStyle != NSTableViewSelectionHighlightStyle.None) { 

       NSColor.FromCalibratedWhite (0.65f, 1.0f).SetStroke(); 
       NSColor.FromCalibratedWhite (0.82f, 1.0f).SetFill(); 

       var selectionPath = NSBezierPath.FromRoundedRect (dirtyRect, 0, 0); 

       selectionPath.Fill(); 
       selectionPath.Stroke(); 
      } 
     } 
    } 
相关问题