2016-04-29 4 views
0

Я пытаюсь заполнить представление своими данными, используя ItemsControl. Я установил bindings и values, но вид пуст.C# Windows Phone ItemsControl empty

Это моя 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> 

и он заполнен файлом .cs с этим кодом:

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(); 
    } 

страница отображается в данный момент без каких-либо ошибок, но это пустой. no textblocks и вид не отображается.

Что мне не хватает?

ответ

1

Попробуйте изменить свой ObservableCollection на свойство, а не на публичное поле.

Старый:

public ObservableCollection<LSK_LETTURA> lskLetture; 

новые (Отредактированный решение, которое устранило проблему):

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

И вы должны связать на объекте getLskLetture

Наручники не работают на поля, только по свойствам.

+0

Мне нужно было добавить оба наблюдаемых коллекций, а свойство имеет настраиваемый набор для возврата в поле. но это указывало на решение! спасибо: D –

+0

Нет проблем, всегда рад помочь хотя бы немного:) –

+0

так же, как sidenote: всегда делайте ваши поля частными. Таким образом, ваш lskLetture-Colleciton должен быть конфиденциальным, было бы бессмысленно делать поле и собственность публичной! –