2011-01-08 10 views
11

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

मेरे पास एक मूल सूची बॉक्स है, और प्रत्येक आइटम की सामग्री एक साधारण स्ट्रिंग है।

लिस्टबॉक्स स्वयं को इसके ग्रिड कंटेनर को भरने के लिए बढ़ाया गया है, लेकिन प्रत्येक ListBoxItem की हिटरेरा ListBox चौड़ाई को दर्पण नहीं करती है। ऐसा लगता है कि प्रत्येक आइटम के लिए हिटारेरा (सूचक संपर्क क्षेत्र) केवल टेक्स्ट सामग्री की चौड़ाई है। पाठ आकार के बावजूद, मैं इस खिंचाव को पूरी तरह से कैसे बना सकता हूं।

मैंने क्षैतिज सामग्री को स्ट्रेच करने के लिए सेट किया है, लेकिन यह मेरी समस्या का समाधान नहीं करता है। मेरा एकमात्र अन्य अनुमान यह है कि सामग्री वास्तव में फैल रही है, लेकिन पृष्ठभूमि अदृश्य है और इसलिए माउस पॉइंटर को कैप्चर नहीं कर रहा है।

<ListBox 
    Grid.Row="1" 
    x:Name="ProjectsListBox" 
    DisplayMemberPath="Name" 
    ItemsSource="{Binding Path=Projects}" 
    SelectedItem="{Binding Path=SelectedProject}" 
    HorizontalContentAlignment="Stretch"/> 

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

+0

कृपया अपना एक्सएएमएल पोस्ट करें। – Zamboni

उत्तर

23

HorizontalContentAlignment="Stretch" इसे काम करने के लिए ItemContainerStyle में सेट किया जाना चाहिए।

Xaml उदाहरण

<ListBox xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
    <ListBox.ItemsSource> 
     <x:Array Type="{x:Type sys:String}"> 
      <sys:String>String 1</sys:String> 
      <sys:String>String 2</sys:String> 
      <sys:String>String 3</sys:String> 
      <sys:String>String 4</sys:String> 
     </x:Array> 
    </ListBox.ItemsSource> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding}" Background="Green"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

अद्यतन
इस

<ListBox ...> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
     </Style> 
    </ListBox.ItemContainerStyle> 
+0

क्या मेरे वर्तमान में चुनी गई शैली को ओवरराइट किए बिना ऐसा करने का कोई तरीका है? मैं एक बाहरी विषय का उपयोग कर रहा हूं, और मैं इसे संपादित नहीं करना चाहता हूं। – Nicholas

+0

ऐसा लगता है कि अगर मैं इसे सूची बॉक्स पर करता हूं तो यह पूरी तरह से मेरी शैली को ओवरराइट करता है। – Nicholas

+0

@ निकोलस: मेरे अपडेट का प्रयास करें –

2

भी प्रयास करें, फ्रेड्रिक के जवाब में जोड़ने से, अगर आप Disabled को ListBox के ScrollViewer.HorizontalScrollBarVisibility गुण सेट, आइटम हमेशा होगा ListBox की बिल्कुल ग्राहक चौड़ाई है।

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

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