2012-11-12 17 views
5

मैं देख रहा हूं 1) क्या चल रहा है, और 2) इस मुद्दे को कैसे ठीक किया जाए।विंडोज फोन सूचीबॉक्स आइटम पृष्ठभूमि रंग बदलना भले ही यह स्पष्ट रूप से सेट हो गया है

अंक

एक ListBox आइटम ऊंचाई 2521 से ऊपर है, तो यह काला करने के लिए पृष्ठभूमि परिवर्तित करने के लिए भी जब पृष्ठभूमि स्पष्ट रूप से कुछ और करने के लिए सेट कर दिया जाता है।

पुन: पेश करने के लिए कैसे

मैं नीचे है नमूना XAML फाइल ले लो, और अपने xaml.cs में दाखिल निम्नलिखित जोड़ें:

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

बदलें 2522 या उच्चतर के लिए TextBlock की ऊंचाई ।

नमूना कोड वह जगह नहीं है जहां मुझे समस्या का सामना करना पड़ा, हालांकि यह बग का प्रदर्शन करने के लिए एक साधारण उदाहरण है। मैं एक TextBlock है कि आकार में है 2522+ :)

नमूना 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 नहीं है। कोई प्रदर्शन समस्या नहीं है और ListBox सुस्त नहीं है। बैकग्राउंड बदलते रंग को छोड़कर सब कुछ अपेक्षित काम करता है।

+1

100 से अधिक TextBlocks को रोकने के लिए आक्रामक होने की कोशिश कर नहीं है, लेकिन मुझे लगता है तुम सच में समझ में नहीं आता listboxes और DataTemplates है, जब तक आप वास्तव में चाहते हैं * प्रत्येक * ListBoxItem, जिस स्थिति में आप चाहिए पुनर्विचार करें कि आप डेटा को कैसे देख रहे हैं। मुझे यह जानकर आश्चर्य नहीं होगा कि आपने डेटामैम्प्लेट में इन कई UIElements को जोड़कर कुछ प्रकार की कार्यान्वयन सीमा में भाग लिया है। विंडोज फोन 7 की एक सीमा थी कि प्रत्येक UIElement अधिकतर 2048 (या उसके करीब कुछ संख्या) पिक्सल लंबा हो सकता है, यह कुछ समान हो सकता है। मैं सलाह देता हूं कि आप ListBoxes को देखें और उन्हें कैसे पॉप्युलेट करें। – Praetorian

+0

मेरे पास एक बहुत ही जटिल यूआई है जिसे मैंने अल्पसंख्यक के लिए इस सरल उदाहरण से आसवित किया है। मैंने शुरू में सोचा था कि ऐसा इसलिए था क्योंकि मेरे यूआई में बहुत गहराई है (एक्सएएमएल में), लेकिन यह पता चला है कि यह तत्वों की संख्या हो सकती है; या शायद आपने ऊंचाई सीमा का उल्लेख किया है।मैं यह देखने के लिए कुछ प्रयोग करूंगा कि ऊंचाई अपराधी है या नहीं। – 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 सेट कर सकते हैं। यह आपकी मदद कर सकता है।

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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^