2012-04-05 5 views
0

Я работаю над гаджетом Windows, который покажет список из sharepoint мой код за workd fine и собирает данные из sharepoint. , и мой код xaml должен показывать список в списке, но способ, которым я привязал его, показывает данные с одной буквой за строкой и только первым элементом. не знаю почему.wpf ListBox Binding ObservableCollection показать все испорченные

Это мой XML-код

<Page x:Class="TipsList.Page1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Page1" Height="350" Width="525"> 

    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
     <ListBox Name="ListboxTips" Width="Auto" ItemsSource="{Binding StateTitle}" /> 
     <StackPanel Grid.Column="1"> 
      <Button Click="OnLoad">_Load</Button> 

     </StackPanel> 
    </Grid> 

</Page> 

и это мой код позади:

 //The Url 
     siteUrl = "http://site/SandBox"; 
     //The Site Context using ClientContext class 
     //This will create a Client connection to Web Application 
     clientContext = new SPSClient.ClientContext(siteUrl); 

     //The Web Site to Open 

     clientWeb = clientContext.Web; 

     var salesInfoList = clientContext.Web.Lists.GetByTitle("Tips"); 

     //Define the CAMLQuery this will be used to Query to the List 

     SPSClient.CamlQuery Query = new SPSClient.CamlQuery(); 

     SPSClient.ListItemCollection listData = salesInfoList.GetItems(Query); 

     //Now Execute the Query 

     var queryResultSaleListItems = clientContext.LoadQuery(listData); 

     clientContext.ExecuteQuery(); 

     //Read the Data into the Object 

     var TipsList = from Sales in queryResultSaleListItems 
         select Sales; 
     ObservableCollection<Tips> colTips = new ObservableCollection<Tips>(); 
     //Read Every List Item and Display Data into the DataGrid 
     foreach (SPSClient.ListItem item in TipsList) 
     { 

      var tips = new Tips(); 
      tips.StateTitle = item.FieldValues.Values.ElementAt(2).ToString(); 
      tips.ProductName = item.FieldValues.Values.ElementAt(4).ToString(); 
      tips.Quantity = item.FieldValues.Values.ElementAt(5).ToString(); 

      colTips.Add(tips); 
     } 
     ListboxTips.DataContext = colTips; 
    } 
    catch (Exception ex) 
    { 
     // Log error (including InnerExceptions!) 
     // Handle exception 
    } 

} 

Спасибо за вашу помощь,

ответ

0

В коде XAML, изменить

<ListBox Name="ListboxTips" Width="Auto" ItemsSource="{Binding StateTitle}" /> 

до

<ListBox Name="ListboxTips" Width="Auto" ItemsSource="{Binding}"> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <Grid> 
     <TextBlock Text="{Binding Path=StateTitle}"/> 
     </Grid> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Успехов

+0

Спасибо за это – user1315345

0

немного короче

<ListBox Name="ListboxTips" Width="Auto" ItemsSource="{Binding ColTips}" DisplayMemeberPath=StateTitle /> 

Если вы уже установить контекст ColTips, то вам не нужно и ItemsSource

Смежные вопросы