2009-05-04 14 views
1

Silverlightを学びたいので、私の家のフィードをFriendFeedから取得して一覧に表示する簡単なデモアプリケーションを作成しました。リストボックスがSilverlight 2のデータバインドに設定されていません

<ListBox x:Name="lstItems" Margin="5,61,5,5" Grid.Row="1">    
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Margin="8,8,43,8"> 
        <TextBlock Text="{Binding Title}" /> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate>    
    </ListBox> 

private void LoginButton_Click(object sender, RoutedEventArgs e) 
{ 
    FriendFeedServiceClient client = new FriendFeedServiceClient(); 
    client.GetHomeCompleted += new EventHandler<GetHomeCompletedEventArgs>(client_GetHomeCompleted); 
    client.GetHomeAsync(FfUsername.Text, FfApiKey.Password); 
} 

void client_GetHomeCompleted(object sender, GetHomeCompletedEventArgs e) 
{ 
    lstItems.DataContext = e.Result; 
} 

FriendFeedServiceClientはへの要求をプロキシローカルWebサービスへの呼び出しを行っているWebサービスの呼び出しによって移入されている:

私は定義されたリストボックスを持っています実際のFriendFeedウェブサービス

lstItems.DataContextプロパティにデータが含まれている項目のリストが表示されますが、リストには何も表示されず、常に空白になっています。私は何かを逃したか?

答えて

1


あなたはあなたのリストボックス、この

<ListBox x:Name="lstItems" Margin="5,61,5,5" Grid.Row="1" ItemsSource="{Binding}"> 

、その後のTextBlockの結合タイトルが動作するはずのパスに何かをバインドする必要があります。

EDIT:あなたは、あなたのカスタムオブジェクトにe.GetResultをキャスト

YourCustomObject obj = (YourCustomObject) e.GetResult; 
lstItems.DataContext = obj; 
の同類に 何かを試してみましたが、種類のあなたはおそらく、カスタムオブジェクトを結合しているヒントを与えるのDataContextを設定しています

HTH

+0

残念ながら、それは何も変更されていません。サービスはまだデータで応答し、何もしません。 –

+0

e.GetResultで受信しているダミー値を貼り付けてください。 e.Getresultがあなたとカスタムビジネスオブジェクトを送信していない場合、コードビハインドでDataContextの代わりにListBox.ItemsSourceを設定しようとしました –

+0

問題が見つかりました。サービスはフィールドを使用していないオブジェクトを返していました。サービスはデバッグでこれらのオブジェクトを設定しますが、XAMLプロパティゲッターでは利用できませんでした –

1

あなたはDataContextにバインドしていません。 ItemsSource="{Binding}"を追加

試してみてください。

<ListBox x:Name="lstItems" Margin="5,61,5,5" Grid.Row="1" ItemsSource="{Binding}"> 

次にクラスと、オブジェクトのTitleプロパティの両方がプライベートでないことを確認してください。 また、Bindingエラーメッセージがある場合は、出力(Visual Studioのint出力ウィンドウ)を確認してお知らせください。

1

DataContextではなく、ItemsSourceを設定する必要があります。 DataContextを使用する場合は、バインディングを使用してItemsSourceを設定する必要がありますが、このレベルの間接指定は、実行しようとしている場合にはむしろ不必要です。

ListBoxにデータをリストする方法の詳細については、MSDN articleを参照してください。

関連する問題