XAML-Datenbindung für dynamische Spalte WPF DataGrid
Beim WPF-Anwendungsdesign ist es manchmal notwendig, einen Datensatz mit einer variablen Anzahl von Spalten in einem DataGrid anzuzeigen. Während WPF Flexibilität bei der programmgesteuerten Anpassung von Rasterspalten bietet, kann dieser Ansatz umständlich werden, wenn die Anzahl der Spalten groß ist.
In diesem Fall ist es besser, die Spalten mithilfe der Datenbindung direkt in der XAML-Datei zu definieren. In diesem Artikel wird eine Problemumgehung untersucht, um dies zu erreichen, indem ein angehängtes Attribut namens BindableColumns
erstellt wird.
Definieren Sie zunächst eine einfache Data
-Klasse, um sich ändernde Spalten und Zeilen darzustellen:
<code class="language-csharp">public class Data { public IList<ColumnDescription> ColumnDescriptions { get; set; } public string[][] Rows { get; set; } }</code>
Zusätzliches Attribut BindableColumns
verwaltet die Spalten des DataGrids, indem es die Änderungen von ObservableCollection<DataGridColumn>
beobachtet. Wenn sich die Sammlung ändert, aktualisiert diese Eigenschaft die Spalten des DataGrid entsprechend:
<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>
Da Sie nun über die angehängten Attribute verfügen, können Sie das DataGrid an ObservableCollection<DataGridColumn>
in XAML binden:
<code class="language-xaml"><DataGrid ... AutoGenerateColumns="False" local:DataGridColumnsBehavior.BindableColumns="{Binding ColumnCollection}" Name="dataGrid"/></code>
Mit dieser Problemumgehung können Sie mithilfe der Datenbindung veränderbare Spalten eines WPF-DataGrids direkt in XAML definieren. Insbesondere beim Umgang mit variablen Spaltenzahlen bietet es einen komfortablen und leicht zu wartenden Ansatz.
Das obige ist der detaillierte Inhalt vonWie binde ich ein WPF-DataGrid mithilfe der XAML-Datenbindung an eine variable Anzahl von Spalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!