2009-05-04 76 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> 

正在由Web服務調用

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服務來代理請求填充實際的FriendFeed web服務。

服務調用工作正常,返回項目,如果我調試調用lstItems.DataContext屬性填充其中的數據項目列表,但列表不顯示任何內容,它總是空白。我錯過了什麼嗎?

回答

1


您需要在列表框,綁定的東西像這樣

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

,然後將TextBlock的結合標題應該工作的路徑。

編輯:您設置的DataContext,哪種給人一種暗示,你可能綁定一個自定義對象,你嘗試過鑄造e.GetResult您的自定義對象, 東西的

YourCustomObject obj = (YourCustomObject) e.GetResult; 
lstItems.DataContext = obj; 
喜歡

HTH

+0

不幸的是,這並沒有改變任何東西。服務仍然響應數據,然後什麼都不做 – 2009-05-04 06:09:39

1

您沒有綁定到DataContext。

嘗試增加ItemsSource="{Binding}"

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

然後確保你的對象既類和Title屬性是不是私人的。 如果有任何綁定錯誤消息並且讓我們知道,還檢查輸出(Visual Studio中的int輸出窗口)。

1

不是DataContext您應該設置ItemsSource。如果你使用DataContext那麼你必須設置ItemsSource具有約束力,但這一水平的間接比較不需要你想要做什麼。

關於在上市ListBox數據的詳細信息請參見本MSDN article