0

Как изменить выбранный цвет фона строки NSTable?Изменить цвет выделения NSTableView выбранной строки

здесь хорошо answer, но для удобного просмотра.

В настоящем время, что я вижу, что я могу изменить выбранный стиль HILIGHT:

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# implem ентация:

внутри делегата:

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(); 
      } 
     } 
    }