2016-04-29 14 views
0

Ich versuche eine Ansicht mit meinen Daten zu füllen, indem ich eine ItemsControl benutze. Ich setze bindings und values, aber die Ansicht ist leer.C# Windows Phone ItemsControl leer

Das ist mein XAML:

 <phone:PanoramaItem Header="lettura" 
            x:Name="nuovaLettura" 
            Tag="nuovaLettura"> 
      <phone:PanoramaItem.HeaderTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding}" 
          FontSize="56" Margin="0, 10"/> 
       </DataTemplate> 
      </phone:PanoramaItem.HeaderTemplate> 
      <ItemsControl ItemsSource="{Binding lskLetture}" x:Name="lettureControl"> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <Border BorderThickness="1" 
          BorderBrush="Brown" 
           Background="Transparent"> 
          <StackPanel Orientation="Vertical"> 
           <TextBlock 
            Margin="12, 0, 0, -5" 
            Text="Nome lettura" 
            FontSize="18" /> 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="*"/> 
             <ColumnDefinition Width="Auto"/> 
            </Grid.ColumnDefinitions> 
            <Button IsEnabled="False" 
             Grid.Column="0" 
             Grid.Row="0" 
             Content="{Binding tipoLettura}"/> 
            <TextBlock Text="*" 
             Foreground="Red" 
             Grid.Column="1" 
             Grid.Row="0" 
             Visibility="{Binding visibilitàObbligatorio}"/> 
           </Grid> 

           <TextBlock 
            Margin="12, 0, 0, -5" 
            Text="Data lettura" 
            FontSize="18" /> 
           <toolkit:DatePicker IsEnabled="False" 
             Value="{Binding dataLettura}"/> 

           <TextBlock 
            Margin="12, 0, 0, -5" 
            Text="Esito lettura" 
            FontSize="18" 
            /> 
           <toolkit:ListPicker IsEnabled="False" 
              ItemsSource="{Binding scelte}" 
              Visibility="{Binding visibilitàScelte}"/> 
           <TextBox FontSize="18" 
             IsEnabled="False" 
             x:Name="valoreLettura" 
             Text="{Binding valoreLettura}" 
             Visibility="{Binding visibilitàNonScelte}"/> 

           <TextBlock 
            Margin="12, 0, 0, -5" 
            Text="Note" 
            FontSize="18" /> 
           <TextBox FontSize="18" 
            MinHeight="50" 
            x:Name="noteLettura" 
            Text="{Binding note}"/> 

          </StackPanel> 
         </Border> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 
     </phone:PanoramaItem> 

und es durch die .cs Datei mit diesem Code gefüllt ist:

private List<LETTURA> lettureOriginali; 
    public ObservableCollection<LSK_LETTURA> lskLetture; 

    public class LSK_LETTURA 
    { 
     public Guid id { get; set; } 
     public Guid idInt { get; set; } 
     public Guid idTipologiaLettura { get; set; } 
     public string tipologiaLettura{ get; set; } 
     public DateTime? dataLettura { get; set; } 
     public List<string> scelte { get; set; } 
     public string valoreLettura { get; set; } 
     public string note { get; set; } 
     public string visibilitàObbligatorio { get; set; } 
     public string visibilitàScelte { get; set; } 
     public string visibilitàNonScelte { get; set; } 

    } 

    private void CreaOggettoLettura() 
    { 
     lettureOriginali = new LETTURA().SelectByInt(intervento.ID); 
     lskLetture = new ObservableCollection<LSK_LETTURA>(); 

     foreach (LETTURA l in lettureOriginali) 
     { 
      var tipologiaLettura = new TIPOLOGIA_LETTURA().SelectById(l.ID_TIPO_LETTURA); 
      lskLetture.Add(new LSK_LETTURA() 
      { 
       id = l.ID, 
       idInt = l.ID_INT, 
       idTipologiaLettura = tipologiaLettura.ID, 
       tipologiaLettura = tipologiaLettura.NOME, 
       dataLettura = l.DATA_LETTURA ?? DateTime.Today, 
       note = l.NOTE, 
       scelte = tipologiaLettura.UNITA_MISURA == "Lista di scelte" ? new List<string>() : tipologiaLettura.POSSIBILI_VALORI.Split(',').ToList(), 
       valoreLettura = l.VALORE_LETTURA, 
       visibilitàObbligatorio = l.OBBLIGATORIO ? "Visible" : "Collapsed", 
       visibilitàScelte = tipologiaLettura.UNITA_MISURA == "Lista di scelte" ? "Visible" : "Collapsed", 
       visibilitàNonScelte = tipologiaLettura.UNITA_MISURA == "Lista di scelte" ? "Collapsed" : "Visible" 
      }); 
     } 
     lettureControl.UpdateLayout(); 
    } 

Die Seite zur Zeit ohne Fehler angezeigt wird, aber es ist leer. nein textblocks und keine Ansichten sind sichtbar.

Was ich vermisse?

Antwort

1

Versuchen Sie, Ihre ObservableCollection in eine Eigenschaft und kein öffentliches Feld zu ändern.

Alt:

public ObservableCollection<LSK_LETTURA> lskLetture; 

Neu (Edited Lösung, die das Problem fest):

public ObservableCollection<LSK_LETTURA> lskLetture; 
public ObservableCollection<LSK_LETTURA> getLskLetture 
{ 
    get 
    { 
     return lskLetture; 
    } 
    set 
    { 
     lskLetture = value; 
    } 
} 

Und Sie müssen binden auf dem getLskLetture Objekt

Bindungen funktionieren nicht auf Felder, nur für Eigenschaften.

+0

Ich musste beide Observablecollections hinzufügen, und die Eigenschaft hat eine benutzerdefinierte Get-Set für die Rückgabe-Einstellung des Feldes. aber das wies mich auf die Lösung hin! danke: D –

+0

Kein Problem, immer froh, wenigstens ein bisschen zu helfen:) –

+0

nur als Nebenbemerkung: Mach immer deine Felder privat. Deine lskLetture-Colleciton sollte also privat sein, es macht keinen Sinn, das Feld und das Objekt öffentlich zu machen! –