SilverlightアプリケーションからDBへアクセスする方法を調べてたんですが、とりあえずWCFサービスを使う方法を試してみました。

コードは下記のブログを丸々参考にさせていただきました。

silverlight 3でデータベースを使用する。WCF利用

大変参考になりました。

というわけでそのままコード書いて実行してみたものの、

DataGridに読み込んだデータが表示されない。。。

namespace WCFDBAccessTest
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void serviceClient_DataTestCompleted(object sender, DataTestCompletedEventArgs e)
        {
            textBlock1.Text += "serviceClient_DataTestCompleted started.rn";

            dataGrid1.ItemsSource = e.Result;

            textBlock1.Text += "DataSource count is " + e.Result.Count + "rn";
            textBlock1.Text += "serviceClient_DataTestCompleted was completed.rn";
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            textBlock1.Text = "";
            dataGrid1.ItemsSource = null;

            SampleWCF.WCFServiceClient serviceClient = new WCFServiceClient();
            serviceClient.DataTestCompleted +=
                new EventHandler
                (serviceClient_DataTestCompleted);

            serviceClient.DataTestAsync();

        }
    }
}

Silverlightアプリってデバッグできないんだっけ?うーんわからん。。。

WCFサービス側はデバッグできたので、サービスがデータを返してることは確認できたんですが、

Silverlightアプリ側でそれを受け取れてるのかがいまいち把握できない。

なので、

上のように serviceClient_DataTestCompleted イベントでItemSourceの件数を表示するようにしてみたところ、

ちゃんとデータが帰ってきてることがわかりました。

うーん。。。と結構悩みこんでしまったのですが、

原因はDataGridの「AutoGenerateColumns」プロパティ、これでした。

プロパティ一個とは。。。

まだまだわからんことだらけだなー。

でもなんとか、WCFサービスでデータのやりとりもできたので、

これでまた先へ進めます、良かった!