2012-06-13 16 views
5

में प्रवेश मैं सरल सूची बॉक्स बनाना चाहता हूं। प्रत्येक पंक्ति में 2 नियंत्रण होना चाहिए, बायीं तरफ दायीं तरफ गठबंधन किया गया है, यह सब है :) मैंने कई दृष्टिकोणों की कोशिश की लेकिन कुछ भी काम नहीं किया। मेरे कोडसी # विंडोज फोन- xaml ListBox.ItemTemplate

<StackPanel Grid.Row="1" Margin="12,0,12,0" Grid.Column="0"> 
     <ListBox Name="ListBox" Margin="12,0,12,0" ItemsSource="Exercises" HorizontalContentAlignment="Stretch"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" Width="> 
         <TextBlock Text="abc" HorizontalAlignment="Left" VerticalAlignment="Center"/> 
         <TextBlock Text="def" HorizontalAlignment="Right" VerticalAlignment="Center"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </StackPanel> 

पीछा कर रहा है (दो textblocks असली आवेदन में मैं दूसरे बीमार उपयोग बटन के बजाय, वास्तविक डेटा पर एक पाठ खंड बाध्य करने के लिए करना चाहते हैं सिर्फ प्रदर्शन के लिए कर रहे हैं।) जब बीमार इस संकलन, दोनों टेक्स्टब्लॉक बाईं ओर गठबंधन किया गया है, एमुलेटर में, यह टेक्स्ट "abcdef" के साथ एक टेक्स्टब्लॉक जैसा लगता है। कोई विचार है कि एक टेक्स्ट ब्लॉक को दाईं ओर कैसे संरेखित करें और दूसरा बायीं ओर कैसे करें? बहुत धन्यवाद :)

+0

को परिभाषित बस स्पष्ट होना सिफारिश करेंगे, आप चाहते हैं नियंत्रण छोड़ दिया और सही गठबंधन या उनके * सामग्री * गठबंधन बाएं या दाएं? – CodingGorilla

+0

आईडी जैसे बाएं और दाएं को गठबंधन करने के लिए नियंत्रण की तरह :) – user1453857

उत्तर

16

डिफ़ॉल्ट रूप से ListBoxItem इसे दी गई जगह को भरता नहीं है। यह स्वयं को और बाईं ओर सामग्री संरेखित करता है। कि अपने ListBoxItem की सामग्री पूरी चौड़ाई तक फैली सुनिश्चित करने के लिए, आप ItemContainerStyle

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

बदलने के लिए अब सामग्री उपलब्ध चौड़ाई अवधि की जरूरत होगी। यदि आप अपने उदाहरण के रूप में एक स्टैकपैनल का उपयोग करना चाहते हैं, तो यह सुनिश्चित करें कि यह क्षैतिज एलाइनमेंट भी सेट करें। StackPanel भी दिया

<DataTemplate> 
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch"> 
     <TextBlock Text="abc" HorizontalAlignment="Left" VerticalAlignment="Center"/> 
     <TextBlock Text="def" HorizontalAlignment="Right" VerticalAlignment="Center"/> 
    </StackPanel> 
</DataTemplate> 

हालांकि उपलब्ध स्थान को भरने नहीं है, मैं एक ग्रिड का उपयोग करने और दो कॉलम

<DataTemplate> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="abc" HorizontalAlignment="Left" VerticalAlignment="Center"/> 
     <TextBlock Text="def" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center"/> 
    </Grid> 
</DataTemplate> 
+0

धन्यवाद, "ग्रिड दृष्टिकोण" काम करता है :) आपको user1453857

+0

का उपयोग करने की भी आवश्यकता नहीं है, जब मैं ItemContainerStyle I को बदलता हूं, तो मैं MaterialDesign और MahApps का उपयोग कर रहा हूं। इन पुस्तकालयों द्वारा प्रदान की गई कस्टम शैली को खो दें, मुझे लगता है कि यह पूरी तरह से सूची बॉक्स शैली को रीसेट करता है, वैसे भी मैं केवल उस संपत्ति को बदलने के दौरान कस्टम शैली रख सकता हूं? –

+0

शैली की सबसे अधिक संभावना है, आप शैली का उपयोग <स्टाइल टार्गेट टाइप = "ListBoxItem" BasedOn = "{StaticResource MahAppsListBoxItem"> –

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