2012-10-24 19 views
5

मेरे पास एक बहुत ही सरल WPF ListView है जिसका उपयोग मैं टेक्स्ट के ब्लॉक सूचीबद्ध करने के लिए कर रहा हूं। मैं इसे लंबवत स्क्रॉल करना चाहता हूं, लेकिन पाठ को लपेटना चाहिए ताकि कोई क्षैतिज स्क्रॉल न हो। मैंने जो भी उदाहरण देखा है, वे डेटाग्रिड व्यू घोंसले समाधानों को अत्यधिक संकलित कर रहे हैं। हालांकि, यह इतना आसान उपयोग-मामला जैसा लगता है।मैं WPF ListView में सामग्री कैसे लपेटूं?

<ListView 
     Height="Auto" 
     Width="Auto" 
     Margin="0" 
     Name="mLogListView" 
     FontWeight="Bold" 
     FontSize="16" 
     SelectionMode="Single" 
     ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
     HorizontalContentAlignment="Stretch"/> 

मैं ScrollViewer.HorizontalScrollBarVisibility और HorizontalContentAlignment गुण स्थापित करने की कोशिश की है, लेकिन पाठ बस नियंत्रण के अंत से चलाता है और लपेट नहीं है: यहाँ मेरे वर्तमान कोड है।

प्रत्येक आइटम ListView.Items संग्रह में जोड़ा गया है और ListViewItem ऑब्जेक्ट है। पाठ आइटम की Content संपत्ति पर सेट है।

ListViewItem item = new ListViewItem();    
item.Content = "Item text is set here, but refuses to wrap in list view!"; 
mLogListView.Items.Add(item); 

धन्यवाद:

यहाँ कोड सूची में पाठ बार जोड़ना लिए जिम्मेदार है।

उत्तर

14

यह होना चाहिए कि तुम क्या जरूरत है

<ListView Margin="12,23,309,191" 
     Name="mLogListView" 
     FontWeight="Bold" 
     FontSize="16" 
     SelectionMode="Single" 
     ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
     HorizontalContentAlignment="Stretch" > 
<!-- here set the itemTemplate to a TextBlock that can wraps--> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Path=.}" TextWrapping="Wrap"></TextBlock> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
</ListView> 

नोट वाक्य रचना Text="{Binding Path=.}" कि Text="{Binding}" के बराबर है। इसे खाली बाध्यकारी वाक्यविन्यास कहा जाता है।

इस मामले में Text संपूर्ण ListViewItem ऑब्जेक्ट से जुड़ा हुआ है। खाली बाध्यकारी वाक्यविन्यास तब उपयोगी होता है जब आप आइटम की केवल एक संपत्ति के बजाय संपूर्ण ऑब्जेक्ट आइटम से जुड़ना चाहते हैं।

यह उदाहरण के लिए सुविधाजनक है क्योंकि स्रोत ऑब्जेक्ट (ListViewItem) प्रकार स्ट्रिंग का है और आप बस स्ट्रिंग से बांधना चाहते हैं।

अधिक जानकारी के लिए खंड पर msdn देखने के मूल्य

+0

कि एमएसडीएन लिंक अब मर चुका है। इसे आज़माएं: https://msdn.microsoft.com/en-us/library/vstudio/ms752347(v=vs.100).aspx#specifying_the_path_to_the_value – Detail

0

मैं एक ListView में छवियों को देखने के लिए चाहते थे के लिए पथ निर्दिष्ट करना, यह डिफ़ॉल्ट केवल एक स्तंभ से प्रदर्शित करता है। इसे रोकने के लिए, आप निम्न कोड प्रविष्ट कर सकते

ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
:

<ListView.ItemsPanel> 
    <ItemsPanelTemplate> 
     <WrapPanel Margin="0" /> 
    </ItemsPanelTemplate> 
</ListView.ItemsPanel> 

अब एक स्तंभ के बजाय, ListView प्रदर्शित करता है, :-(केवल एक पंक्ति इसे रोकने के लिए, आप कोड की इस पंक्ति सम्मिलित कर सकते हैं

तो यह कुछ इस तरह दिखाई दे सकता है:

<ListView ItemsSource="{Binding YourItemsSource...}" 
      ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Border ... and so on ... 

मुझे आशा है कि, यह किसी की मदद कर सकते हैं ;-)

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