Sdílet prostřednictvím


DataGrid.Columns Vlastnost

Definice

Získá kolekci, která obsahuje všechny sloupce v souboru 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)

Hodnota vlastnosti

ObservableCollection<DataGridColumn>

Kolekce sloupců v objektu DataGrid.

Příklady

Následující příklad ukazuje, jak přidat sloupec do kolekce.

<!-- 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

Následující příklad ukazuje, jak odebrat sloupec z kolekce.

<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

Následující příklad ukazuje, jak nastavit vlastnosti sloupců v kolekci, když jsou automaticky generovány a kdy dojde k události.

<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

Poznámky

Pomocí Columns kolekce můžete přidávat sloupce, odebírat sloupce nebo aktualizovat vlastnosti sloupců.

Poznámka

Pořadí sloupců v kolekci nerozebere pořadí, ve kterých se zobrazí .DataGrid Vlastnost DisplayIndex určuje pořadí sloupců.

Každý sloupec v kolekci Columns definuje sloupec v objektu DataGrid. Následující tabulka uvádí čtyři typy sloupců, které poskytuje DataGrid .

Typ sloupce Zobrazení dat
DataGridHyperlinkColumn Slouží k zobrazení dat identifikátoru URI.
DataGridComboBoxColumn Slouží k zobrazení dat výčtu.
DataGridTextColumn Slouží k zobrazení textu.
DataGridCheckBoxColumn Slouží k zobrazení logických dat.

Kromě toho můžete definovat vlastní sloupec pomocí DataGridTemplateColumn. Sloupce v kolekci musí být odvozeny od DataGridColumn. Všimněte si, že DataGridBoundColumn, který přidává podporu pro vazbu, odvozuje a DataGridColumn je základem pro několik definovaných typů sloupců.

Všechny sloupce v kolekci používají ItemsSource vlastnost definovanou objektem DataGrid.

Kolekci Columns můžete upravit za běhu bez ohledu na to, jestli obsahuje vygenerované sloupce.

Platí pro