バージョン

データ バインディング

このコントロールは廃止されたため、XamDataGrid コントロールに移行することをお勧めします。今後、新機能、バグ修正、サポートは提供されません。コードベースの XamDataGrid への移行に関する質問は、サポートまでお問い合わせください。

xamGrid コントロールによって、IEnumerable インターフェイスを実装する任意のオブジェクトにバインドすることができます。データへのバインドはシンプルで、コントロールの ItemsSource プロパティを設定することだけを必要とします。

以下のコードは、xamGrid でデータにバインドする方法を示します。これは開発者に提供される DataUtil クラスを使用します。

XAML の場合:

<UserControl.Resources>
    <local:DataUtil x:Key="DataUtil" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
    <ig:XamGrid x:Name="xamGrid1" ItemsSource="{Binding Source={StaticResource DataUtil}, Path=CategoriesAndProducts}">
    </ig:XamGrid>
</Grid>

Visual Basic の場合:

Me.xamGrid1.ItemsSource = DataUtil.CategoriesAndProducts

C# の場合:

this.xamGrid1.ItemsSource = DataUtil.CategoriesAndProducts;
sl xamGrid Data Binding 01.png

データ バインディングのパフォーマンス

バインドするコレクションのタイプによって、xamGrid のパフォーマンスで若干の違いが見られる場合があります。たいていの場合、ObservableCollection または IList オブジェクトを IEnumerable オブジェクトで使用する必要があります。その理由は、ObservableCollection および IList オブジェクトは行カウントをコントロールに提供しますが、IEnumerable オブジェクトのレコードは行カウントを確認するためにトラバースしなければならないということです。xamGrid でキャッシュすると、これらのコレクションではほぼ同様の速度が維持されますが、ObservableCollection などの INotifyCollectionChanged を実装するコレクションは、変更されたときに xamGrid に通知します。これによってコントロールは正しいデータを常に反映することができます。さらに IList では、最低でも xamGrid で作業するためのデータ機能 (追加および削除など) を必要とします。最高の結果を得るためには、データ ソースに IList および INotifyCollectionChanged インターフェイスを実装することを推奨します。

データ表示

xamGrid コントロールは、xamGrid でデータのバンドを表すために ColumnLayout オブジェクトを使用します。たとえば、オブジェクトのコレクションにバインドして各オブジェクトが パブリック IEnumerable プロパティを公開する場合、xamGrid は 2 つの ColumnLayout オブジェクトを作成します。ひとつはデータのルート バインド用で、もうひとつはデータの子バインド用となります。基本的に、各 IEnumerable プロパティでは、コントロールは ColumnLayout オブジェクトを作成します。ColumnLayout オブジェクトは、Columns コレクションまたは ColumnLayouts コレクションの xamGrid のルート レベルで定義できます。列の定義方法および xamGrid が列レイアウトを作成する方法の詳細は、 列レイアウトの定義を参照してください。

階層データ バインディング

xamGrid コントロールは、コントロールを修正せずに、階層データを提示できます。xamGrid コントロールの ItemSource プロパティを設定するだけでこれを実行できます。デフォルトでは、xamGrid の AutoGenerate プロパティは true に設定されています。これは、xamGrid がデータ ソースのデータと全く同じように表示されることを意味します。列レイアウトを定義してデータの変換方法を制御できます。詳細については、「ノード レイアウトの定義」を参照してください。

関連トピック