DataGrid.Columns Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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.