Sto cercando 1) cosa sta succedendo e 2) come risolvere il problema.Windows Phone ListBox Elemento Sfondo Cambia colore anche se è impostato in modo esplicito
Problema
Se un'altezza ListBox dell'oggetto è superiore a 2521, sembra per cambiare lo sfondo al nero, anche quando lo sfondo è impostato in modo esplicito a qualcos'altro.
come riprodurre
Prendere il file di esempio XAML ho seguito, e nelle vostre xaml.cs il file aggiungere il seguente:
DataContext = new List<int>() { 1 };
Modificare l'altezza del TextBlock al 2522 o superiore .
Il codice di esempio non è quello in cui ho riscontrato il problema, tuttavia è un semplice esempio per dimostrare il bug. Io non sto progettando di avere un TextBlock che è 2522+ dimensioni :)
file di esempio XAML
<Grid x:Name="LayoutRoot" Background="Brown">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<phone:Pivot x:Name="pivot" Title="{Binding name}" Grid.Row="1" Foreground="White" Margin="10,0,0,0">
<phone:PivotItem x:Name="mainPivot" Header="menu" Margin="0,0,20,0">
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="White">
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock Height="2521" Text="some data" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" FontSize="22" Foreground="Purple"/>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</phone:PivotItem>
</phone:Pivot>
</Grid>
</phone:PhoneApplicationPage>
Osservazioni
Alcune persone hanno sollevato preoccupazioni circa la mia interfaccia utente. Il codice sopra riportato è un campione e non la mia IU effettiva. Non ci sono problemi di prestazioni e il ListBox non è lento. Tutto funziona come previsto, tranne lo sfondo cambia colore.
non cercando di essere offensivo, ma ho la sensazione che non capisco ListBoxes e DataTemplates, a meno che non si vuole veramente * ogni * ListBoxItem di contenere oltre 100 TextBlocks, nel qual caso si dovrebbe ripensare a come stai visualizzando i dati. Non sarei sorpreso di sapere che hai incontrato una sorta di limite di implementazione aggiungendo questi molti UIElements al DataTemplate. Windows Phone 7 aveva una limitazione che ogni UIElement poteva essere al massimo 2048 (o un numero vicino a quello) alto di pixel, questo potrebbe essere qualcosa di simile. Ti consiglio di esaminare i ListBox e come popolarli. – Praetorian
Ho un'interfaccia utente molto complessa che ho distillato per questo semplice esempio per brevità. Inizialmente pensavo che fosse perché la mia interfaccia utente ha un sacco di profondità (in XAML), ma risulta che potrebbe essere il numero di elementi; o forse come hai menzionato la limitazione di altezza.Farò qualche esperimento per vedere se l'altezza è il colpevole. – Coltin
Modificherò la mia domanda per chiarire che il codice di esempio mostra il bug in un modo semplice e che non riflette affatto il mio codice reale. – Coltin