Có một số cách để thực hiện những gì bạn đang cố gắng làm ở đây. Nếu hiệu suất không phải là một vấn đề thì tôi sẽ bỏ qua ảo hóa và thử DockPanel
Hạn chế ở đây là bạn sẽ phải thêm các mục theo thứ tự thay vì thêm chúng theo hàng.
Một tùy chọn khác sẽ là sử dụng hai ngăn xếp ngăn xếp (một trong mỗi hướng). Điều này giải quyết vấn đề thêm, nhưng yêu cầu sử dụng nhiều bảng hơn.
Cả hai tùy chọn trước đó sẽ yêu cầu các mục riêng lẻ phải có chiều cao/chiều rộng được đặt.
Tùy chọn cuối cùng (tùy thuộc vào mức độ lớn lưới của bạn), sẽ sử dụng Lưới có hàng và cột có kích thước cố định với các mục trải dài hàng (sử dụng thuộc tính rowspan). Hạn chế của phương thức này là tôi không biết cách nào tốt để tạo điều khiển này trong xaml cho số hàng/cột không xác định, do đó bạn sẽ phải tạo nó trong mã để nhận số hàng/cột cần thiết.
Nếu bạn gặp sự cố về hiệu suất, bạn có thể thử sử dụng VirtualizingStackPanel. Nếu điều này vẫn không đáp ứng các yêu cầu về hiệu suất của bạn thì bạn sẽ cần phải phân lớp VirtualizingPanel
và điều chỉnh nó để đáp ứng các nhu cầu cụ thể của bạn.
Xem here để biết thêm thông tin về hiệu suất Bảng điều khiển.
Tôi đề nghị cố gắng phương pháp hai StackPanel
đầu tiên, sau đó phương pháp VirtualizingStackPanel
và cuối cùng, nếu điều đó không làm việc, sau đó thử VirtualizingPanel
Padding có thể dễ dàng thực hiện bằng cách thiết lập các Margin
tài sản trên mỗi subcontrol.
Đối với di chuyển sử dụng các ScrollViewer
những gì về một bảng điều khiển bọc, bạn có thể thêm một người xem cuộn để nó tạo ra di chuyển, và chừng nào bạn đặt màn hình của bạn theo thứ tự và có cùng một chiều cao vấn đề chiều rộng và vị trí sẽ được giải quyết bởi bảng điều khiển – Clueless