2010-08-06 2 views
0

J'essaye de lister les données d'un webservice dans une grille de données (wpf), mais je ne sais pas ce que je fais de mal, ou me donne des erreurs ou ne liste rien. Voici comment j'ai maintenant.Liste des données d'un service Web dans datagrid WPF

WINDOWS.XAML

<Window x:Class="IssueAddinOutlook.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit" 
    Title="Issue List" Height="424" Width="696"> 

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="102*" /> 
     <ColumnDefinition Width="590*" /> 
    </Grid.ColumnDefinitions> 
    <Label Height="41" Margin="172,0,265,0" Name="label1" VerticalAlignment="Top" FontSize="22" Grid.Column="1">Issue List</Label> 

    <dg:DataGrid x:Name="dataGrid" AutoGenerateColumns="True" 
     AlternationCount="2" 

     HeadersVisibility="All" 
     HorizontalGridLinesBrush="#DDDDDD" 
     VerticalGridLinesBrush="#DDDDDD" Grid.ColumnSpan="2" Margin="0,0,28,26"> 

     <dg:DataGrid.Columns> 
      <dg:DataGridTextColumn Header="ID Issue" Binding="{Binding Path=Id}" /> 
      <dg:DataGridTextColumn Header="Order Id" Binding="{Binding Path=OrderId}" /> 
      <dg:DataGridTextColumn Header="Is Done" Binding="{Binding Path=IsDone}" /> 
      <dg:DataGridTextColumn Header="Final Comment" Binding="{Binding Path=FinalComment}" /> 
      <dg:DataGridTextColumn Header="Actual Hours" Binding="{Binding Path=ActualHours}" /> 
      <dg:DataGridTextColumn Header="Group Id" Binding="{Binding Path=GroupId}" /> 
     </dg:DataGrid.Columns> 
    </dg:DataGrid> 
</Grid> 
<Window.Resources> 
    <Style x:Key="columnHeaderStyle" TargetType="{x:Type dg:DataGridColumnHeader}"> 
     <Setter Property="Background"> 
      <Setter.Value> 
       <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
        <LinearGradientBrush.GradientStops> 
         <GradientStop Color="Navy" Offset="0" /> 
         <GradientStop Color="LightBlue" Offset="1" /> 
        </LinearGradientBrush.GradientStops> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="Foreground" Value="White" /> 
    </Style> 
    <Style x:Key="rowStyle" TargetType="dg:DataGridRow"> 
     <Setter Property="FontFamily" Value="Verdana" /> 
     <Setter Property="FontSize" Value="10" /> 
     <Style.Triggers> 
      <Trigger Property="AlternationIndex" Value="0"> 
       <Setter Property="Background" Value="White" /> 
      </Trigger> 
      <Trigger Property="AlternationIndex" Value="1"> 
       <Setter Property="Background" Value="#DDDDDD" /> 
      </Trigger> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Background" Value="#BBBBBB" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 

Et le WINDOWS.XAML.CS

Issuereference.Tasks issueRef = new Issuereference.Tasks(); 
Issuereference.TASK[] tasksList = issueRef.GetTasks(39); 
dataGrid.ItemsSource = tasksList.ToList(); 

avec ce code donne l'erreur collection Items doit être vide avant d'utiliser ItemsSource. Quelqu'un peut-il m'aider?

Répondre

1

Votre code semble fonctionner correctement. Quoi qu'il en soit, en assignant ItemsSource, y a-t-il quelque chose qui apparaît déjà dans la grille? Ou y a-t-il une partie de l'application qui ajoute manuellement des éléments au DataGrid? Ce message d'erreur signifie généralement qu'une partie de l'application a mis à jour la collection ItemsControl alors qu'elle a une ItemsSource assignée. J'espère que cela a du sens.

+0

non la grille est vide sans données. – Luis

+0

grrrrrrrrr son travail maintenant: D ... je ne sais pas ce que j'ai fait: D – Luis

+0

Eh bien, bon pour vous. ;) – ASanch