DataGrid.Columns Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene una colección que contiene todas las columnas de 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)
Valor de propiedad
Colección de columnas del objeto DataGrid.
Ejemplos
En el ejemplo siguiente se muestra cómo agregar una columna a la colección.
<!-- 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
En el ejemplo siguiente se muestra cómo quitar una columna de la colección.
<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
En el ejemplo siguiente se muestra cómo establecer propiedades en columnas de la colección cuando se generan automáticamente y cuándo se produce un evento.
<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
Comentarios
Use la Columns colección para agregar columnas, quitar columnas o actualizar propiedades en las columnas.
Nota
El orden de las columnas de la colección no determina el orden en que aparecerán en .DataGrid La DisplayIndex propiedad determina el orden de columna.
Cada columna de la Columns colección define una columna en .DataGrid En la tabla siguiente se enumeran los cuatro tipos de columna que DataGrid proporciona .
Tipo de columna | Presentación de datos |
---|---|
DataGridHyperlinkColumn | Use para mostrar datos de URI. |
DataGridComboBoxColumn | Use para mostrar los datos de enumeración. |
DataGridTextColumn | Use para mostrar texto. |
DataGridCheckBoxColumn | Use para mostrar datos booleanos. |
Además, puede definir su propia columna personalizada mediante DataGridTemplateColumn. Las columnas de la colección deben derivarse de DataGridColumn. Tenga en cuenta que DataGridBoundColumn, que agrega compatibilidad con el enlace, deriva de DataGridColumn y es la base de varios de los tipos de columna definidos.
Todas las columnas de la colección usan la ItemsSource propiedad definida por DataGrid.
Puede modificar la Columns colección en tiempo de ejecución independientemente de si contiene columnas generadas.