2013-05-17 13 views
9

मुझे ListBoxItem के साथ विंडोज फोन 8 ऐप पर समस्या है, जबकि उन्हें ListBox की सभी चौड़ाई में फैलाने की कोशिश करते समय।ListBoxItem क्षैतिज सामग्री सूचीसूची की पूर्ण चौड़ाई के पार खींचने के लिए

मेरे ListBox:

<ListBox 
     ItemsSource="{Binding Events}" 
     behaviors:ItemClickCommandBehavior.Command="{Binding EventSelectedCommand}" 
     ItemTemplate="{StaticResource EventListTemplateSelector}"/> 

और इसकी DataTemplates एक अलग XAML संसाधन फ़ाइल में हैं:

<DataTemplate x:Key="EventListHeaderTemplate"> 
    <Border HorizontalAlignment="Stretch"> 
     <Grid Height="50"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="6*"/> 
      </Grid.ColumnDefinitions> 
      <Image Grid.Column="0" Source="{Binding ImageUri}" VerticalAlignment="Center" HorizontalAlignment="Center" Height="30"/> 
      <TextBlock Grid.Column="1" Text="{Binding SomeText}" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="Black"/> 
     </Grid> 
    </Border> 
</DataTemplate> 

मैं वास्तव में आइटम करने के लिए नहीं कर सकते प्राप्त खिंचाव, और मुझे पता है, जहां समस्या है न। मैंने ItemContainerStyle क्षैतिजकोन्टेंट एलाइनमेंट = "स्ट्रेच" सेट करने का प्रयास किया है और यह काम नहीं करता है। मैंने कई अन्य संयोजनों की कोशिश की है और ऐसा लगता है कि सीमावर्ती या ग्रिड चौड़ाई को लगातार काम करने के लिए सेट करना और काम करने वाला एक अन्य समाधान है जो सीमा चौड़ाई को उस सूची बॉक्स के वास्तविक विचलन से बांधने के लिए सेट करना है, लेकिन मैं स्ट्रेच का उपयोग करना चाहता हूं संस्करण अगर यह काम कर सकता है।

+1

यह प्रश्न देखें: [ListBox ItemTemplate को सूची बॉक्स की क्षैतिज रूप से पूर्ण चौड़ाई तक फैलाने के लिए कैसे करें?] (Http://stackoverflow.com/questions/838828/how-to-get-a-listbox-itemtemplate- टू-खिंचाव-क्षैतिज-पूर्ण-चौड़ाई-के-0) –

उत्तर

22

मैं एक वाणिज्यिक WP8 ऐप के विकास के दौरान उसी में भाग गया और यह मुझे आश्चर्यचकित कर दिया कि क्यों मेरा TextBlock चौड़ाई में पूरी तरह से रंगीन नहीं था।

तरह से प्रतिस्पर्धा शैलियों के साथ काम करने के लिए (इस XAML से किसी के लिए काम करता है वास्तव में वेरिएंट) स्पष्ट रूप से स्थान उपयोग को संभालने के लिए ListBoxItem की शैली को परिभाषित करने के लिए है।

इस तरह से स्क्रीन क्षेत्र के लिए XAML एक संकेत उस में भरने के लिए है कि (खिंचाव) देता है कि:

<ListBox Name="lbTest" HorizontalContentAlignment="Stretch" > 

     <ListBox.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="HorizontalContentAlignment" 
         Value="Stretch"/> 
      </Style> 
     </ListBox.ItemContainerStyle> 

     <ListBox.ItemTemplate>...</ListBox.ItemTemplate> 

अन्यथा XAML पार्सर, डिफ़ॉल्ट रूप से, द्वारा स्थान बचाने की कोशिश करता है ऑटो इसे ListBoxItem की सामग्री में आकार दे रहा है; यह डरावना स्कॉच टेप देखो दे रहा है।

+0

क्या यह माइक्रोसॉफ्ट द्वारा बनाई गई एक बग है? जब तक मुझे आपकी पोस्ट नहीं मिली है तब तक मैंने तीन घंटे बर्बाद कर दिए हैं। धन्यवाद। – Dummy

+1

@ डमी यह केवल डिफ़ॉल्ट शैलियों की एक श्रृंखला है जो स्टैंड स्टैंड अकेले नियंत्रण में समझ में आता है, लेकिन जब एक साथ लाया जाता है तो हमें यह देते हैं .... क्लब में आपका स्वागत है जिसने इस शैली ईस्टर अंडे को पाया। ;-) – OmegaMan

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