Заголовок строки DataGrid и скрытие столбца - PullRequest
0 голосов
/ 16 апреля 2020

Я установил заголовки строк в качестве первого столбца связанного DataTable:

    <DataGrid x:Name="grdPreview"
              ItemsSource="{Binding PreviewData}"
              HeadersVisibility="All">
        <DataGrid.RowStyle>
            <Style TargetType="{x:Type DataGridRow}">
                <Setter Property="Header" Value="{Binding Path=Row[0]}" />
            </Style>
        </DataGrid.RowStyle>
    </DataGrid>

Проблема в том, что первый столбец все еще присутствует и дублирует заголовки строк. Как я могу скрыть эту колонку? Или, может быть, есть другой способ отображения заголовков строк?

UPD: Вы можете увидеть, что я имею в виду на скриншоте ниже: первый столбец Spaltennamen дублирует заголовки строк. Чего я хочу добиться - это скрыть этот столбец, вероятно, без нарушения MVVM.

enter image description here

1 Ответ

2 голосов
/ 16 апреля 2020

DataGrid имеет событие AutoGeneratingColumn, которое вызывается для каждого сгенерированного столбца. В вашем файле xaml.cs вы делаете:

void myDataGrid_AutoGeneratingColumn(object sender, System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs e)
{
    if (e.PropertyName == "Spaltennamen")
        e.Cancel = true;
}

Все, что вам нужно сделать в XAML, это перехватить событие:

<DataGrid x:Name="grdPreview"
              AutoGeneratingColumn="myDataGrid_AutoGeneratingColumn"
              ItemsSource="{Binding PreviewData}"
          HeadersVisibility="All">

Это не нарушение MVVM, если вас беспокоит который. Если вы не хотите жестко кодировать имя столбца, вы должны извлечь имя из строк или даже иметь свойство ViewModel IgnoredDataGridColumn или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...