DataGrid for Silverlight の C1DataGrid コントロールは、WCF RIA Services の DomainDataSoure に直接連結できます。XAML でコードを記述することなくこれを行う方法が2つあります。DomainDataSource に直接連結するか(フィルタ処理の一部の機能を使用できなくなります)、または Adaptor クラスを使ってグリッドを連結します。
次のような XAML マークアップを使用すると、グリッドを DomainDataSource に直接連結できます。
XAML |
コードのコピー
|
---|---|
<ria:DomainDataSource x:Name="_myDataSource" QueryName="GetProducts" PageSize="8"> <ria:DomainDataSource.DomainContext> <local:NorthwindContext/> </ria:DomainDataSource.DomainContext> </ria:DomainDataSource> <c1:C1DataGrid x:Name="_dataGrid" ItemsSource="{Binding Data, ElementName=_myDataSource}"> |
この方法でもグリッドを連結して使用できますが、RIA サービスは標準の CollectionView 以外のフィルタ処理方法を使用するので、C1DataGrid の組み込みフィルタ処理機能は使用できません。
すべての機能を維持するには、RIA サービスがフィルタ処理を実行できるように、フィルタ処理情報を "変換" するクラスを追加する必要があります。具体的には、C1RiaAdapter クラスを使用します。このクラスは、RIA で C1DataGrid のフィルタ処理を実行するために必要な変換を実行します。
次のような XAML マークアップを使用します。
DomainDataSource への間接連結(Adapter を使用した連結)
XAML |
コードのコピー
|
---|---|
<adapter:C1RiaAdapter x:Name="_adapter" DataGrid="{Binding ElementName=_dataGrid}"> <ria:DomainDataSource x:Name="_myDataSource" QueryName="GetProducts" PageSize="8"> <ria:DomainDataSource.DomainContext> <local:NorthwindContext/> </ria:DomainDataSource.DomainContext> </ria:DomainDataSource> </adapter:C1RiaAdapter> <c1:C1DataGrid x:Name="_dataGrid" ItemsSource="{Binding Data, ElementName=_adapter}"> |
この方法でグリッドを連結すると、初期設定のままでフィルタ処理を使用できます。もちろん、フィルタ処理のサポートを必要としない場合は、C1RiaAdapter を使用することなく直接グリッドを連結できます。
例については、「WCF RIA Services のデータソースへのグリッドの連結」を参照してください。