diff --git a/Terminal.Gui/Views/TableView/TableView.cs b/Terminal.Gui/Views/TableView/TableView.cs
index 9b5b59f64..238c58f2f 100644
--- a/Terminal.Gui/Views/TableView/TableView.cs
+++ b/Terminal.Gui/Views/TableView/TableView.cs
@@ -1,5 +1,6 @@
using NStack;
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
@@ -258,8 +259,10 @@ namespace Terminal.Gui {
line++;
}
- RenderHeaderMidline (line, columnsToRender);
- line++;
+ if (Style.ShowHeaders) {
+ RenderHeaderMidline (line, columnsToRender);
+ line++;
+ }
if (Style.ShowHorizontalHeaderUnderline) {
RenderHeaderUnderline (line, bounds.Width, columnsToRender);
@@ -321,7 +324,7 @@ namespace Terminal.Gui {
///
private int GetHeaderHeight ()
{
- int heightRequired = 1;
+ int heightRequired = Style.ShowHeaders ? 1 : 0;
if (Style.ShowHorizontalHeaderOverline)
heightRequired++;
@@ -1800,6 +1803,14 @@ namespace Terminal.Gui {
///
public class TableStyle {
+ ///
+ /// Gets or sets a flag indicating whether to render headers of a .
+ /// Defaults to .
+ ///
+ /// , etc
+ /// may still be used even if is .
+ public bool ShowHeaders { get; set; } = true;
+
///
/// When scrolling down always lock the column headers in place as the first row of the table
///
diff --git a/UICatalog/Scenarios/TableEditor.cs b/UICatalog/Scenarios/TableEditor.cs
index 9031a4032..a5eec0912 100644
--- a/UICatalog/Scenarios/TableEditor.cs
+++ b/UICatalog/Scenarios/TableEditor.cs
@@ -16,6 +16,7 @@ namespace UICatalog.Scenarios {
[ScenarioCategory ("Top Level Windows")]
public class TableEditor : Scenario {
TableView tableView;
+ private MenuItem miShowHeaders;
private MenuItem miAlwaysShowHeaders;
private MenuItem miHeaderOverline;
private MenuItem miHeaderMidline;
@@ -56,7 +57,8 @@ namespace UICatalog.Scenarios {
new MenuItem ("_Quit", "", () => Quit()),
}),
new MenuBarItem ("_View", new MenuItem [] {
- miAlwaysShowHeaders = new MenuItem ("_AlwaysShowHeaders", "", () => ToggleAlwaysShowHeader()){Checked = tableView.Style.AlwaysShowHeaders, CheckType = MenuItemCheckStyle.Checked },
+ miShowHeaders = new MenuItem ("_ShowHeaders", "", () => ToggleShowHeaders()){Checked = tableView.Style.ShowHeaders, CheckType = MenuItemCheckStyle.Checked },
+ miAlwaysShowHeaders = new MenuItem ("_AlwaysShowHeaders", "", () => ToggleAlwaysShowHeaders()){Checked = tableView.Style.AlwaysShowHeaders, CheckType = MenuItemCheckStyle.Checked },
miHeaderOverline = new MenuItem ("_HeaderOverLine", "", () => ToggleOverline()){Checked = tableView.Style.ShowHorizontalHeaderOverline, CheckType = MenuItemCheckStyle.Checked },
miHeaderMidline = new MenuItem ("_HeaderMidLine", "", () => ToggleHeaderMidline()){Checked = tableView.Style.ShowVerticalHeaderLines, CheckType = MenuItemCheckStyle.Checked },
miHeaderUnderline = new MenuItem ("_HeaderUnderLine", "", () => ToggleUnderline()){Checked = tableView.Style.ShowHorizontalHeaderUnderline, CheckType = MenuItemCheckStyle.Checked },
@@ -374,7 +376,14 @@ namespace UICatalog.Scenarios {
tableView.Update ();
}
- private void ToggleAlwaysShowHeader ()
+ private void ToggleShowHeaders ()
+ {
+ miShowHeaders.Checked = !miShowHeaders.Checked;
+ tableView.Style.ShowHeaders = (bool)miShowHeaders.Checked;
+ tableView.Update ();
+ }
+
+ private void ToggleAlwaysShowHeaders ()
{
miAlwaysShowHeaders.Checked = !miAlwaysShowHeaders.Checked;
tableView.Style.AlwaysShowHeaders = (bool)miAlwaysShowHeaders.Checked;
diff --git a/UnitTests/Views/TableViewTests.cs b/UnitTests/Views/TableViewTests.cs
index b4fd6a474..d65c084b2 100644
--- a/UnitTests/Views/TableViewTests.cs
+++ b/UnitTests/Views/TableViewTests.cs
@@ -444,6 +444,86 @@ namespace Terminal.Gui.ViewsTests {
Assert.Equal (new Point (8, 3), selected [5]);
}
+ [Fact, AutoInitShutdown]
+ public void TableView_ShowHeadersFalse_AndNoHeaderLines ()
+ {
+ var tv = GetABCDEFTableView (out _);
+ tv.Bounds = new Rect (0, 0, 5, 5);
+
+ tv.Style.ShowHeaders = false;
+ tv.Style.ShowHorizontalHeaderOverline = false;
+ tv.Style.ShowHorizontalHeaderUnderline = false;
+
+ tv.Redraw (tv.Bounds);
+
+ string expected = @"
+│1│2│
+";
+ TestHelpers.AssertDriverContentsAre (expected, output);
+ }
+ [Fact, AutoInitShutdown]
+ public void TableView_ShowHeadersFalse_OverlineTrue ()
+ {
+ var tv = GetABCDEFTableView (out _);
+ tv.Bounds = new Rect (0, 0, 5, 5);
+
+ tv.Style.ShowHeaders = false;
+ tv.Style.ShowHorizontalHeaderOverline = true;
+ tv.Style.ShowHorizontalHeaderUnderline = false;
+
+ tv.Redraw (tv.Bounds);
+
+ string expected = @"
+┌─┬─┐
+│1│2│
+";
+ TestHelpers.AssertDriverContentsAre (expected, output);
+ }
+ [Fact, AutoInitShutdown]
+ public void TableView_ShowHeadersFalse_UnderlineTrue ()
+ {
+ var tv = GetABCDEFTableView (out _);
+ tv.Bounds = new Rect (0, 0, 5, 5);
+
+ tv.Style.ShowHeaders = false;
+ tv.Style.ShowHorizontalHeaderOverline = false;
+ tv.Style.ShowHorizontalHeaderUnderline = true;
+ // Horizontal scrolling option is part of the underline
+ tv.Style.ShowHorizontalScrollIndicators = true;
+
+
+ tv.Redraw (tv.Bounds);
+
+ string expected = @"
+├─┼─►
+│1│2│
+";
+ TestHelpers.AssertDriverContentsAre (expected, output);
+ }
+
+ [Fact, AutoInitShutdown]
+ public void TableView_ShowHeadersFalse_AllLines ()
+ {
+ var tv = GetABCDEFTableView (out _);
+ tv.Bounds = new Rect (0, 0, 5, 5);
+
+ tv.Style.ShowHeaders = false;
+ tv.Style.ShowHorizontalHeaderOverline = true;
+ tv.Style.ShowHorizontalHeaderUnderline = true;
+ // Horizontal scrolling option is part of the underline
+ tv.Style.ShowHorizontalScrollIndicators = true;
+
+
+ tv.Redraw (tv.Bounds);
+
+ string expected = @"
+┌─┬─┐
+├─┼─►
+│1│2│
+";
+ TestHelpers.AssertDriverContentsAre (expected, output);
+ }
+
[Fact, AutoInitShutdown]
public void TableView_ExpandLastColumn_True ()
{