2012-11-12 2 views
5

私は1)何が起こっているのか、2)問題を解決する方法を探しています。Windows Phoneリストボックスの項目背景明白に設定されているにもかかわらず、色を変更

問題

ListBoxの項目の高さが2521を超えている場合、背景が明示的に他の何かに設定されている場合でも、黒の背景を変更するようです。 2522以上に

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

変更のTextBlockの高さ:私は以下の持っている、とあなたxaml.csファイルに以下を追加したサンプルのXAMLファイルを取る

を再現する方法を

サンプルコードは、問題が発生した場所ではありませんが、バグを示す簡単な例です。私のサイズは2522+あるのTextBlockを持つことを計画していないです:)

サンプル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> 

備考

少数の人々が懸念を示してきたが私のUI。上記のコードはサンプルで、実際のUIは表示されません。パフォーマンス上の問題はなく、ListBoxは低速ではありません。背景が色を変える以外はすべて期待どおりに動作します。

+1

どのようにデータを視覚化しているか再考してください。これらの多くのUIElementsをDataTemplateに追加することで、ある種の実装制限に慣れてきたことに驚くことはありません。 Windows Phone 7には、各UIElementが2048ピクセル(またはそれに近い数のピクセル)の高さになる可能性があるという制限がありました。これは似たようなものかもしれません。私はListBoxを調べるためのアドバイス、およびそれらを設定する方法を説明します。 – Praetorian

+0

私は非常に複雑なUIを持っていますが、簡潔にするために、この簡単な例を参考にしています。私は当初、UIの深さが(XAMLでは)深かったからだと思っていましたが、それは要素の数であるかもしれません。おそらくあなたが高さ制限を述べたように。私は、高さが原因であるかどうかを確認するためにいくつかの実験を行います。 – Coltin

+0

サンプルコードがバグを簡単な方法で示し、実際のコードをまったく反映していないことを明確にするために質問を変更します。 – Coltin

答えて

0

「なぜ」はわからないが、グリッドが黒い背景を実行していたものが「何」に表示されているかはわかりません。私はグリッドを外し、それは動作します...

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

それはあなたのために働きますか?

+0

この例ではグリッドを削除すると作業が行われますが、高さを3030に変更して再び破損しました。試してくれてありがとう、この問題はかなりトリッキーです! :) – Coltin

1

WP7 TextBlocks had a height limit of 2048x2048。 WP8で修正されているかどうかは分かりませんが、今のところ同じ問題のようです。テキストを2048ピクセルより小さいチャンクに分割するか、ScrollableTextBlockのようなものを使ってテキストを分割することを検討してください。

0

リストボックスにminWidthを設定できます。これはあなたを助けるかもしれません。あなたがすべき場合には、攻撃になろうとしていますが、実際には100を超えるテキストブロックを格納するための*各* ListBoxItemをしない限り、私は、あなたが本当にリストボックスとDataTemplatesを理解していない感じを持っていませ

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

関連する問題