2013-07-11 29 views
5

Tôi cần hiển thị tất cả các tệp nằm trong một đường dẫn cụ thể. Tôi đã tạo ra một điều khiển người dùng có chứa textblocks cho các chi tiết của tập tin (tên, kích thước, mở rộng, vv), điều khiển này sẽ là con của lưới thống nhất.WPF Cuộn một Uniformgrid

Vấn đề là, nếu đồng phục của tôi là 5x5 và tôi có hơn 25 tệp, phần tử thứ 26 không được hiển thị.

Tôi muốn biết, có cách nào để cuộn nội dung của lưới đồng nhất không?

Tôi biết tôi có thể sử dụng hộp danh sách và ràng buộc (tôi vẫn đọc về nó), nhưng tôi cần thêm các điều khiển theo chương trình, vì điều khiển có sự kiện và tôi đăng ký nó khi mới instance của usercontrol được tạo và sau đó được thêm vào mảng con.

Tôi đã nhìn thấy this bưu điện, và tôi đã đặt uniforgrid bên trong một ItemsControl, nhưng Nó không làm việc ở tất cả, đây là XAML của tôi:

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

Theo bài viết, chỉ cols hoặc hàng cần phải được chỉ định, không bao giờ cả hai. Vì vậy, chỉ có 5 cols. Tôi không muốn di chuyển hrizontal, chỉ dọc.

Cảm ơn thời gian của bạn.

Trả lời

6

tôi sao chép Xaml của bạn và nó dường như làm việc như mong đợi

Đây là mã thử nghiệm của tôi trong trường hợp nó giúp bạn chẩn đoán vấn đề của bạn

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> 

Code:

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; } 
    } 
} 

Kết quả:

enter image description here

+0

Với ví dụ của bạn, tôi thấy rằng tôi cần phải thêm nhiều mục để xem lưới theo cách tôi muốn. Có cách nào để giữ cho các vật phẩm được sắp xếp giống như ma trận 5x5 không? Với 5 mục, lưới sẽ hiển thị chúng ở giữa theo chiều dọc và tôi muốn chúng ở trên cùng. Cảm ơn bạn đã giúp đỡ!! – BlackCath

+0

Nevermind, tôi đã tìm thấy nó, tôi đã thêm VerticalAlignment = "Top" vào thuộc tính uniformgrid. Cảm ơn bạn đã giúp đỡ! – BlackCath

Các vấn đề liên quan