C# 如何隐藏DataGrid标题左侧的箭头?

C# 如何隐藏DataGrid标题左侧的箭头?,c#,wpf,datagrid,C#,Wpf,Datagrid,检查下面的链接 我想做的是去掉左角的箭头。问题是我是从代码而不是在XAML中创建数据网格的。代码如下: DataGrid reportDataGrid = new DataGrid(); reportDataGrid.AutoGenerateColumns = false; reportDataGrid.CanUserAddRows = false; reportDataGrid.IsReadOnly = true; reportDataGrid.VerticalScrollBarVisibi

检查下面的链接

我想做的是去掉左角的箭头。问题是我是从代码而不是在XAML中创建数据网格的。代码如下:

DataGrid reportDataGrid = new DataGrid();
reportDataGrid.AutoGenerateColumns = false;
reportDataGrid.CanUserAddRows = false;
reportDataGrid.IsReadOnly = true;
reportDataGrid.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
reportDataGrid.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
reportDataGrid.RowHeaderWidth = 0;
reportDataGrid.HeadersVisibility = DataGridHeadersVisibility.Column;
以及一些列定义和绑定:

var caseNameCol= new DataGridTextColumn();
caseNameCol.Header = "Case Name";
Binding binding = new Binding("CaseName");
binding.Mode = BindingMode.OneWay;
binding.Source = list;
caseNameCol.Binding = binding;
reportDataGrid.Columns.Add(caseNameCol);

var caseItemNameCol= new DataGridTextColumn();
caseItemNameCol.Header = "Case Item Name";
Binding caseBinding = new Binding("CaseItemName");
caseBinding .Source = list;
caseBinding .Mode = BindingMode.OneWay;
caseItemNameCol.Binding = caseBinding ;
reportDataGrid.Columns.Add(caseItemNameCol);

一切正常,但问题是箭头仍在我的数据网格中。知道如何将其从datagrid中删除吗?

使用RowHeaderWidth属性:

<my:DataGrid RowHeaderWidth="0" AutoGenerateColumns="False" Name="dataGrid1" />


请注意,如果您决定确实喜欢它,并且想保留它,因为您可以用它做一些很酷的事情,那么您也可以为它指定一种样式或模板。

为这一款做好准备

首先,我们将为datagrid定义一个ControlTemplate。这将基于默认设置,只需一个小改动。您可以在上找到默认模板

同时在我们窗口后面的代码中

//set up datagrid...
this.reportDataGrid.Template = this.Resources["dgControlTemplate"] as ControlTemplate;
而且

private void theScaryButton_Loaded(object sender, RoutedEventArgs e)
{
    //this is a baddy way to do this.  better to recurse through visual tree
    //or try your luck at FindName/GetTemplateChild nonsense

    VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(sender as FrameworkElement, 0), 1).SetValue(FrameworkElement.VisibilityProperty, Visibility.Collapsed);
}
可怕的按钮里面埋着一个讨厌的小多边形。为了举例,我添加了一些坏代码来抓住他,让他闭嘴。更好的方法是递归可视化树,或者从Button派生,并使用GetTemplateChild试试运气。不过,这应该足以让你开始。原谅我,如果这是非常复杂的,我来自Silverlight世界,那里的一切都是非常复杂的


<>你也可以考虑尝试通过视觉树来寻找讨厌的小多边形,但是准备好在你向下的路上挖一个,不是两个,而是三个控制模板。< /p>检查我的代码。我确实使用了该属性,但没有效果;我没有RowHeadersVisible属性。感谢您提供详细答案。我会试试看,如果我能成功的话,会告诉你的。
//set up datagrid...
this.reportDataGrid.Template = this.Resources["dgControlTemplate"] as ControlTemplate;
private void theScaryButton_Loaded(object sender, RoutedEventArgs e)
{
    //this is a baddy way to do this.  better to recurse through visual tree
    //or try your luck at FindName/GetTemplateChild nonsense

    VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(sender as FrameworkElement, 0), 1).SetValue(FrameworkElement.VisibilityProperty, Visibility.Collapsed);
}