2013-07-11 10 views
5

मुझे किसी विशिष्ट पथ में स्थित सभी फ़ाइलों को प्रदर्शित करने की आवश्यकता है। मैंने एक उपयोगकर्ता नियंत्रण बनाया है जिसमें फ़ाइल (नाम, आकार, विस्तार इत्यादि) के विवरण के लिए टेक्स्टब्लॉक शामिल हैं, यह नियंत्रण वर्दी ग्रिड का बच्चा होगा।WPF एक वर्दीग्र्रिड स्क्रॉल करें

समस्या यह है कि, यदि मेरा वर्दीग्रिड 5x5 है, और मेरे पास 25 से अधिक फ़ाइलें हैं, 26 वां तत्व नहीं दिखाया गया है।

मुझे पता है, वर्दी ग्रिड की सामग्री को स्क्रॉल करने का कोई तरीका है?

मुझे पता है कि मैं एक सूची बॉक्स का उपयोग कर सकता हूं और बाध्यकारी (मैं अभी भी इसके बारे में पढ़ रहा हूं), लेकिन मुझे प्रोग्राम को प्रोग्रामेटिक रूप से जोड़ने की ज़रूरत है, 'क्योंकि नियंत्रण में कोई घटना होती है, और जब मैं एक नया होता हूं तो मैं इसकी सदस्यता लेता हूं usercontrol का उदाहरण बनाया गया है और उसके बाद बाल सरणी में जोड़ा गया है।

<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" > 
    <ItemsControl x:Name="gridArchivos"> 
     <ItemsControl.ItemsPanel > 
      <ItemsPanelTemplate > 
       <UniformGrid Columns="5" /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
    </ItemsControl>      
</ScrollViewer> 

पोस्ट के अनुसार, केवल कॉलम या पंक्तियों:

मैं this पोस्ट को देखा है, और मैं पहले से ही एक ItemsControl अंदर uniforgrid रखा है, लेकिन यह बिल्कुल भी काम नहीं करता है, यह मेरी XAML है निर्दिष्ट करने की जरूरत है, दोनों कभी नहीं। तो, केवल 5 कोल्स। मैं क्षैतिज स्क्रॉलिंग नहीं चाहता, केवल लंबवत।

आपके समय के लिए धन्यवाद।

उत्तर

6

मैं अपने Xaml की नकल की और यह के रूप में की उम्मीद

यहाँ अपने परीक्षण कोड है काम करने के लिए बैठाना यह मदद करता है आप अपनी समस्या

Xaml का निदान लगता है:

<Window x:Class="WpfApplication7.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" Name="UI"> 
    <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" > 
     <ItemsControl ItemsSource="{Binding Items, ElementName=UI}"> 
      <ItemsControl.ItemsPanel > 
       <ItemsPanelTemplate > 
        <UniformGrid Columns="5" /> 
       </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
     </ItemsControl> 
    </ScrollViewer> 
</Window> 

कोड:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     for (int i = 0; i < 1000; i++) 
     { 
      Items.Add("Stackoverflow"+i); 
     } 
    } 

    private ObservableCollection<string> items = new ObservableCollection<string>(); 
    public ObservableCollection<string> Items 
    { 
     get { return items; } 
     set { items = value; } 
    } 
} 

परिणाम:

enter image description here

+0

आपके उदाहरण के साथ, मुझे पता चला है कि मुझे ग्रिड को जिस तरह से देखना है, उसे देखने के लिए मुझे बहुत सारी चीज़ें जोड़नी होंगी। क्या 5x5 मैट्रिक्स की तरह व्यवस्थित वस्तुओं को रखने का कोई तरीका है? 5 आइटम के साथ, ग्रिड उन्हें ऊर्ध्वाधर पर केंद्रित करता है, और मैं उन्हें शीर्ष पर चाहता हूं। आपकी सहायता के लिए धन्यवाद!! – BlackCath

+0

कभी नहीं, मुझे यह पता चला है, मैंने वर्टिकल एलाइनमेंट में वर्टिकल एलाइनमेंट = "टॉप" जोड़ा है। आपकी सहायताके लिए धन्यवाद! – BlackCath

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