DataGrid.Columns Eigenschaft

Definition

Ruft eine Auflistung ab, die alle Spalten im DataGrid-Objekt enthält.Gets a collection that contains all the columns in the DataGrid.

public:
 property System::Collections::ObjectModel::ObservableCollection<System::Windows::Controls::DataGridColumn ^> ^ Columns { System::Collections::ObjectModel::ObservableCollection<System::Windows::Controls::DataGridColumn ^> ^ get(); };
public System.Collections.ObjectModel.ObservableCollection<System.Windows.Controls.DataGridColumn> Columns { get; }
member this.Columns : System.Collections.ObjectModel.ObservableCollection<System.Windows.Controls.DataGridColumn>
Public ReadOnly Property Columns As ObservableCollection(Of DataGridColumn)

Eigenschaftswert

Die Auflistung der Spalten in der DataGrid.The collection of columns in the DataGrid.

Beispiele

Im folgenden Beispiel wird gezeigt, wie der Auflistung eine Spalte hinzugefügt wird.The following example shows how to add a column to the collection.

<!-- ItemsSource is a DataTable that contains a list of customers.  The DataTable columns are  
     Title, FirstName, MiddleName, LastName, Suffix, CompanyName, EmailAddress, and Phone.-->
<DataGrid Grid.Row="2" Name="DG2" ItemsSource="{Binding}" AutoGenerateColumns="False" />
public Window1()
{
Public Sub New()
    //Create a new column to add to the DataGrid
    DataGridTextColumn textcol = new DataGridTextColumn();
    //Create a Binding object to define the path to the DataGrid.ItemsSource property
    //The column inherits its DataContext from the DataGrid, so you don't set the source
    Binding b = new Binding("LastName");
    //Set the properties on the new column
    textcol.Binding = b;
    textcol.Header = "Last Name";
    //Add the column to the DataGrid
    DG2.Columns.Add(textcol);
    
}
    'Create a new column to add to the DataGrid
    Dim textcol As New DataGridTextColumn()
    'Create a Binding object to define the path to the DataGrid.ItemsSource property 
    'The column inherits its DataContext from the DataGrid, so you don't set the source
    Dim b As New Binding("LastName")
    'Set the properties on the new column
    textcol.Binding = b
    textcol.Header = "Last Name"
    'Add the column to the DataGrid

    DG2.Columns.Add(textcol)
End Sub

Im folgenden Beispiel wird gezeigt, wie eine-Spalte aus der-Auflistung entfernt wird.The following example shows how to remove a column from the collection.

<Button Content="Delete First Column" Click="Button_Click" />
<!-- ItemsSource is a DataTable that contains a list of customers.  The DataTable columns are  
     Title, FirstName, MiddleName, LastName, Suffix, CompanyName, EmailAddress, and Phone.-->
<DataGrid Grid.Row="1" Name="DG1" ItemsSource="{Binding}" AutoGeneratingColumn="DG1_AutoGeneratingColumn"  />
private void Button_Click(object sender, RoutedEventArgs e)
{
    //Delete the first column whether visible or not
    DG1.Columns.RemoveAt(0);

}
Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    'Delete the first column whether visible or not
    DG1.Columns.RemoveAt(0)
End Sub

Im folgenden Beispiel wird gezeigt, wie Eigenschaften für Spalten in der Auflistung festgelegt werden, wenn Sie automatisch generiert werden und wenn ein Ereignis auftritt.The following example shows how to set properties on columns in the collection when they are auto-generated and when an event occurs.

<CheckBox Content="View Customer Details" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" />
<!-- ItemsSource is a DataTable that contains a list of customers.  The DataTable columns are  
     Title, FirstName, MiddleName, LastName, Suffix, CompanyName, EmailAddress, and Phone.-->
<DataGrid Grid.Row="1" Name="DG1" ItemsSource="{Binding}" AutoGeneratingColumn="DG1_AutoGeneratingColumn"  />
private void DG1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    //Set properties on the columns during auto-generation
    switch (e.Column.Header.ToString())
    {
        case "LastName":
            e.Column.CanUserSort = false;
            e.Column.Visibility = Visibility.Visible;
            break;
        case "FirstName":
            e.Column.Visibility = Visibility.Visible;
            break;
        case "CompanyName":
            e.Column.Visibility = Visibility.Visible;
            break;
        case "EmailAddress":
            e.Column.Visibility = Visibility.Visible;
            break;
        default:
            e.Column.Visibility = Visibility.Collapsed;
            break;
    }

}

private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
    //Make each column in the collection visible
    foreach (DataGridColumn col in DG1.Columns)
    {
        col.Visibility = Visibility.Visible;
    }
}

private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
    //Get the columns collection
    ObservableCollection<DataGridColumn> columns = DG1.Columns;

    //set the visibility for each column so only 4 columns are visible
    foreach (DataGridColumn col in columns)
    {
        switch (col.Header.ToString())
        {
            case "LastName":
                col.Visibility = Visibility.Visible;
                break;
            case "FirstName":
                col.Visibility = Visibility.Visible;
                break;
            case "CompanyName":
                col.Visibility = Visibility.Visible;
                break;
            case "EmailAddress":
                col.Visibility = Visibility.Visible;
                break;
            default:
                col.Visibility = Visibility.Collapsed;
                break;
        }
    }

}
Private Sub DG1_AutoGeneratingColumn(ByVal sender As Object, ByVal e As DataGridAutoGeneratingColumnEventArgs)
    'Set properties on the columns during auto-generation
    Select Case e.Column.Header.ToString()
        Case "LastName"
            e.Column.CanUserSort = False
            e.Column.Visibility = Visibility.Visible
            Exit Select
        Case "FirstName"
            e.Column.Visibility = Visibility.Visible
            Exit Select
        Case "CompanyName"
            e.Column.Visibility = Visibility.Visible
            Exit Select
        Case "EmailAddress"
            e.Column.Visibility = Visibility.Visible
            Exit Select
        Case Else
            e.Column.Visibility = Visibility.Collapsed
            Exit Select

    End Select
End Sub

Private Sub CheckBox_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    'Make each column in the collection visible
    For Each col As DataGridColumn In DG1.Columns
        col.Visibility = Visibility.Visible
    Next
End Sub

Private Sub CheckBox_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    'Get the columns collection
    Dim columns As ObservableCollection(Of DataGridColumn) = DG1.Columns

    'set the visibility for each column so only 4 columns are visible
    For Each col As DataGridColumn In columns
        Select Case col.Header.ToString()
            Case "LastName"
                col.Visibility = Visibility.Visible
                Exit Select
            Case "FirstName"
                col.Visibility = Visibility.Visible
                Exit Select
            Case "CompanyName"
                col.Visibility = Visibility.Visible
                Exit Select
            Case "EmailAddress"
                col.Visibility = Visibility.Visible
                Exit Select
            Case Else
                col.Visibility = Visibility.Collapsed
                Exit Select
        End Select

    Next
End Sub

Hinweise

Verwenden Sie Columns die-Auflistung, um Spalten hinzuzufügen, Spalten zu entfernen oder die Eigenschaften der Spalten zu aktualisieren.Use the Columns collection to add columns, remove columns, or update properties on the columns.

Hinweis

Die Reihenfolge der Spalten in der Auflistung bestimmt nicht die Reihenfolge, in der DataGridSie angezeigt werden.The order of columns in the collection does not determine the order that they will appear in the DataGrid. Die DisplayIndex -Eigenschaft bestimmt die Spaltenreihenfolge.The DisplayIndex property determines the column order.

Jede Spalte in der Columns Auflistung definiert eine Spalte DataGridin.Each column in the Columns collection defines a column in the DataGrid. In der folgenden Tabelle sind die vier Spaltentypen aufgeführt DataGrid , die von der bereitstellt werden.The following table lists the four column types that the DataGrid provides.

SpaltentypColumn Type DatenanzeigeData Display
DataGridHyperlinkColumn Verwenden Sie, um URI-Daten anzuzeigen.Use to display URI data.
DataGridComboBoxColumn Verwenden Sie, um Enumerationsdaten anzuzeigen.Use to display enumeration data.
DataGridTextColumn Verwenden Sie, um Text anzuzeigen.Use to display text.
DataGridCheckBoxColumn Verwenden Sie, um boolesche Daten anzuzeigen.Use to display Boolean data.

Außerdem können Sie mithilfe DataGridTemplateColumnvon eine eigene benutzerdefinierte Spalte definieren.In addition, you can define your own custom column by using DataGridTemplateColumn. Die Spalten in der Auflistung müssen von DataGridColumnabgeleitet werden.Columns in the collection must derive from DataGridColumn. Beachten Sie DataGridBoundColumn, dass, das die Unterstützung für die DataGridColumn -Bindung hinzufügt, von abgeleitet wird und die Grundlage für mehrere der definierten Spaltentypen ist.Note that DataGridBoundColumn, which adds support for binding, derives from DataGridColumn and is the base for several of the defined column types.

Alle Spalten in der Auflistung verwenden die ItemsSource -Eigenschaft, die DataGridvon definiert wird.All columns in the collection use the ItemsSource property defined by the DataGrid.

Sie können die Columns Sammlung zur Laufzeit ändern, unabhängig davon, ob Sie generierte Spalten enthält.You can modify the Columns collection at run time regardless of whether it contains generated columns.

Gilt für: