DataGrid.Columns Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene un insieme contenente tutte le colonne dell'oggetto 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)
Valore della proprietà
Insieme di colonne contenute nell'oggetto DataGrid.
Esempio
Nell'esempio seguente viene illustrato come aggiungere una colonna all'insieme.
<!-- 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
Nell'esempio seguente viene illustrato come rimuovere una colonna dall'insieme.
<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
Nell'esempio seguente viene illustrato come impostare le proprietà sulle colonne dell'insieme quando vengono generate automaticamente e quando si verifica 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
Commenti
Utilizzare la Columns raccolta per aggiungere colonne, rimuovere colonne o aggiornare le proprietà nelle colonne.
Nota
L'ordine delle colonne nell'insieme non determina l'ordine in cui verranno visualizzate nell'oggetto DataGrid. La DisplayIndex proprietà determina l'ordine delle colonne.
Ogni colonna dell'insieme Columns definisce una colonna nell'oggetto DataGrid. Nella tabella seguente sono elencati i quattro tipi di colonna forniti da DataGrid .
Tipo di colonna | Visualizzazione dei dati |
---|---|
DataGridHyperlinkColumn | Usare per visualizzare i dati URI. |
DataGridComboBoxColumn | Usare per visualizzare i dati di enumerazione. |
DataGridTextColumn | Usare per visualizzare il testo. |
DataGridCheckBoxColumn | Usare per visualizzare i dati booleani. |
È anche possibile definire una colonna personalizzata usando DataGridTemplateColumn. Le colonne nella raccolta devono derivare da DataGridColumn. Si noti che DataGridBoundColumn, che aggiunge il supporto per l'associazione, deriva da DataGridColumn e è la base per diversi tipi di colonna definiti.
Tutte le colonne dell'insieme usano la ItemsSource proprietà definita da DataGrid.
È possibile modificare la Columns raccolta in fase di esecuzione indipendentemente dal fatto che contenga colonne generate.