XAML の可変数の列を使用した WPF DataGrid の動的バインディング
WPF アプリケーションでは、データ列の数が変更されることがよくあります。このようなデータを DataGrid にバインドするのは、特にプログラムで列を生成する場合に困難になる場合があります。この記事では、XAML で列の動的バインディングを実装する方法について説明します。
典型的な WPF シナリオでは、列をデータにバインドするには、DataGridTextColumn の作成と、その Binding プロパティと Header プロパティの設定が含まれます。ただし、DataGrid の Columns プロパティは読み取り専用であり、直接バインドすることはできません。
この制限を克服するために、バインドされたコレクションが変更されたときに DataGrid 列を更新する BindableColumns と呼ばれる追加プロパティを導入しました。例は次のとおりです:
<code class="language-xml"><DataGrid ... AutoGenerateColumns="False" local:DataGridColumnsBehavior.BindableColumns="{Binding ColumnCollection}" Name="dataGrid"></DataGrid></code>
この XAML では、BindableColumns 添付プロパティを DataGridColumn オブジェクトの ObservableCollection にバインドします。 DataGrid は、バインドされたコレクション内の変更をリッスンし、独自の Columns プロパティを自動的に更新します。
BindableColumns の追加プロパティは次のように定義されます:
<code class="language-csharp">public class DataGridColumnsBehavior { public static readonly DependencyProperty BindableColumnsProperty = DependencyProperty.RegisterAttached("BindableColumns", typeof(ObservableCollection<DataGridColumn>), typeof(DataGridColumnsBehavior), new UIPropertyMetadata(null, BindableColumnsPropertyChanged)); private static void BindableColumnsPropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e) { // 实现根据集合更改更新DataGrid列 } }</code>
このメソッドを使用すると、データ列の数や構造が変わった場合でも、列を WPF DataGrid に動的にバインドできます。コードが簡素化され、アプリケーションがより柔軟にデータを表現できるようになります。
以上がXAML で可変数の列を WPF DataGrid に動的にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。