2012-11-12 10 views
5

Szukam 1), co się dzieje, i 2) jak rozwiązać problem.Windows Phone ListBox Element Zmiana koloru tła, chociaż jest ustawiony wyraźnie

Issue

Jeżeli wysokość ListBox Pozycja jest ponad 2521, wydaje się, aby zmienić tło na czarno nawet gdy tło jest jawnie ustawiony na coś innego.

sposób odtworzenia

Weźmy przykładowy plik XAML mam poniżej, aw swoim xaml.cs pliku dodaj następujące:

DataContext = new List<int>() { 1 }; 

zmienić wysokość TextBlock do 2522 lub wyższy .

Przykładowy kod nie jest tam, gdzie napotkałem problem, jednak jest to prosty przykład do zademonstrowania błędu. Ja nie planuje posiadania TextBlock, który jest 2522+ w rozmiarze :)

pliku XAML Próbka

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

Uwagi

Kilka osób wyraziło obawy dotyczące mój interfejs. Powyższy kod to próbka, a nie mój rzeczywisty interfejs użytkownika. Nie ma problemów z wydajnością, a ListBox nie jest powolny. Wszystko działa zgodnie z oczekiwaniami, z wyjątkiem zmiany koloru tła.

+1

Nie stara się być obraźliwe, ale mam wrażenie, że nie bardzo rozumiem listboxes i DataTemplates, chyba że naprawdę chcesz * * ListBoxItem każdy zawiera ponad 100 TextBlocks, w takim przypadku zalecana przemyśleć, jak wizualizujesz dane. Nie zdziwiłbym się, gdy dowiedziałem się, że przekroczyłeś pewien limit implementacji, dodając wiele UIElements do DataTemplate. Windows Phone 7 miał ograniczenie, że każdy UIElement mógł wynosić co najwyżej 2048 (lub pewną liczbę zbliżoną do tego) pikseli, może to być coś podobnego. Radzę ci zajrzeć do ListBoxes i jak je wypełnić. – Praetorian

+0

Mam bardzo skomplikowany interfejs użytkownika, który oddałem do tego prostego przykładu ze względu na zwięzłość. Początkowo myślałem, że to dlatego, że mój interfejs ma dużo głębi (w XAML), ale okazuje się, że może to być liczba elementów; a może jak już wspomniałeś o ograniczeniu wysokości.Zrobię kilka eksperymentów, aby sprawdzić, czy wzrost jest winowajcą. – Coltin

+0

Zmodyfikuję moje pytanie, aby wyjaśnić, że przykładowy kod demon pokazuje błąd w prosty sposób i że w ogóle nie odzwierciedla mojego prawdziwego kodu. – Coltin

Odpowiedz

0

Nie wiem, "dlaczego", ale na "co" wygląda na to, że siatka była tą, która ma czarne tło. Wynoszę siatkę i zachowuje się ...

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

Czy to działa dla Ciebie?

+0

Usunięcie siatki w tym przykładzie działa, ale zmieniłem wysokość na 3030 i ponownie się zepsuło. Dzięki za próbę, ten problem jest dość trudny! :) – Coltin

0

możesz ustawić minWidth do listbox. to może ci pomóc.

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