2012-11-12 5 views
5

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.

+1

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

+0

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

+0

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

risposta

0

Non sono sicuro del "perché" ma sul "cosa" sembra che la griglia fosse quella che esegue lo sfondo nero. Prendo la griglia e si comporta ...

<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> 
         <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28" Background="White"> 
          <TextBlock Height="2530" Text="some data" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" FontSize="22" Foreground="Purple"/> 
         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
     </phone:PivotItem> 

Funziona per voi?

+0

La rimozione della griglia in quell'esempio funziona, ma ho cambiato l'altezza a 3030 e si è rotto di nuovo. Grazie per aver provato, questo problema è piuttosto complicato! :) – Coltin

0

è possibile impostare minWidth nella casella di riepilogo. questo potrebbe aiutarti.

<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> 

Problemi correlati