Maison >développement back-end >C++ >Comment lier un DataGrid WPF à un nombre variable de colonnes à l'aide de la liaison de données XAML ?
Liaison de données XAML pour la colonne dynamique WPF DataGrid
Dans la conception d'applications WPF, il est parfois nécessaire d'afficher un ensemble de données avec un nombre variable de colonnes dans un DataGrid. Bien que WPF offre une certaine flexibilité dans la personnalisation des colonnes de la grille par programmation, cette approche peut devenir fastidieuse si le nombre de colonnes est important.
Dans ce cas il est préférable de définir les colonnes directement dans le fichier XAML en utilisant la liaison de données. Cet article explore une solution de contournement pour y parvenir en créant un attribut attaché appelé BindableColumns
.
Tout d'abord, définissez une classe Data
simple pour représenter les colonnes et les lignes changeantes :
<code class="language-csharp">public class Data { public IList<ColumnDescription> ColumnDescriptions { get; set; } public string[][] Rows { get; set; } }</code>
L'attribut supplémentaire BindableColumns
gère les colonnes du DataGrid en observant les changements de ObservableCollection<DataGridColumn>
. Lorsque la collection change, cette propriété met à jour les colonnes du DataGrid en conséquence :
<code class="language-csharp">public class DataGridColumnsBehavior { public static readonly DependencyProperty BindableColumnsProperty = ...; public static void BindableColumnsPropertyChanged(...) { DataGrid dataGrid = source as DataGrid; ObservableCollection<DataGridColumn> columns = e.NewValue as ObservableCollection<DataGridColumn>; // 清除现有列 dataGrid.Columns.Clear(); // 添加新列 if (columns != null) { foreach (DataGridColumn column in columns) { dataGrid.Columns.Add(column); } // 订阅集合更改事件 columns.CollectionChanged += ...; } } }</code>
Maintenant que vous disposez des attributs attachés, vous pouvez lier le DataGrid à ObservableCollection<DataGridColumn>
en XAML :
<code class="language-xaml"><DataGrid ... AutoGenerateColumns="False" local:DataGridColumnsBehavior.BindableColumns="{Binding ColumnCollection}" Name="dataGrid"/></code>
Cette solution de contournement vous permet de définir des colonnes mutables d'un WPF DataGrid directement dans XAML à l'aide de la liaison de données. Surtout lorsqu'il s'agit de nombres variables de colonnes, il constitue une approche pratique et facile à entretenir.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!