ちなみに、発見したチュートリアルは
コレです。
この3つめの、3 Filling a DataGrid using Sql, Linq and WCF というやつが、WCF経由でデータを取得して、SilverLight上のDataGridに表示しちゃおうというサンプルです。
チュートリアルは3つめですが、1から順にやらなくてもココから読んでも理解できます。
サンプルのSQL Server Expressデータベースだけ、準備しておけば後は特別なものは要らないです。
では、PDFにそって手順を簡単に殴り書きます。
1.VS2008で、新しいSilverLightプロジェクトを作成
2.Silverlightアプリケーションの追加ダイアログが出たら、「コントロールをホストするための新しいWebをソリューションに追加する」を選び、プロジェクトの種類を「Web Application Project」にする。
3.サーバープロジェクトを右クリックし、「追加」「新しい項目」で、「LINQ to SQL クラス」を選択
4.オブジェクト リレーショナル デザイナが開くので、サーバーエクスプローラーを開いて、適当なテーブルをドラッグ&ドロップでデザイナに入れる。
5.デザイナの空白の部分をクリックして、プロパティタブの 「Serialization Mode」の項目に、Unidirectionalをセットする。
6.再び、サーバープロジェクトを右クリックし、「追加」「新しい項目」で、WCFサービスを追加。
7.追加された IService.cs ファイルに、DBから取得したデータを返す為のメソッド宣言を記述する。
#PDFのP7を参考に、適宜書き換えます。Customerのところは、手順4でデザイナに入れたテーブル名を指定します。
8.Service1.svc.cs ファイルを開き、IService1 の上にマウスポインタを持っていき、出てくるタグを開いて、「IService1 を実装する」を選択します。
#PDFのP8を参考に、適宜書き換えます。db.Customer のところは、手順4でデザイナに入れたテーブル名を指定します。
9.Web.config ファイルを書き換えます。
endpoint 要素の binding属性を、wsHttpBinding から、basicHttpBinding に変更します。
#この辺がキモなのかも。
これでWebサービス側の実装は終わりです。
10.Silverlight プロジェクトを右クリックして、サービス参照の追加を選択。
11.表示されるダイアログの”探索ボタン”をクリックして、先ほど作成したWebサービスを指定したらOKを押す。
#ここでエラーが出る場合は、サーバープロジェクト側をリビルドすると良いかも。
12.Page.xaml ファイルを編集する。
PDFのP11、12の内容を記述します。
分かりにくいですが、全てGridタグの中に記述するようです。
最終的には、こんな感じになります。(かなり省略してます、、、)
<Grid ...>
<Grid.RowDefinitions ...></Grid.RowDefinitions >
<Grid.ColumnDefinitions ...></Grid.ColumnDefinitions >
<Border .../>
<StackPanel ...></StackPanel >
<my:DataGrid ...></my:DataGrid >
</Grid >
13.イベントハンドラーを、page.xaml.cs に追加します。
これもPDFのP13を参照しつつ、適宜変更してください。
特に、Silverlightは 非同期のWebサービス呼び出ししかサポートしていないらしく、〜Async というメソッドと、〜Completed というイベントの使い方に注意です。
14.動かしてみて終わり。
です。
とりあえず手元でやってみたプロジェクトは動きました。
あれー??
最初に出ていたWebサービスのエラーはなんだったんだろう、、、
キモは、オブジェクトのシリアライズ設定とWeb.config の編集部分かな??
わからん、、、
というわけで、調査が続きます。
clipboard.swf