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?
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 –
Kein Problem, immer froh, wenigstens ein bisschen zu helfen:) –
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! –