Tôi có một câu hỏi khái niệm. Tôi đang gói một số lớp thống kê mà tôi đã viết vào WPF.
Đối với điều này, tôi có hai DataGrids (-Views, hiện có trong WinForms). Trong DataGrid, mỗi hàng đại diện cho một cột trong một hàng khác. Ở đó tôi có thể đặt các biến khác nhau (như biến toán học/thống kê) với các trường như "Tiêu đề", "DataType", "ValidationBehaviour", "DisplayType", v.v. Tôi cũng có thể thiết lập cách nó hiển thị ở đó. Một số cột có thể được đặt tự động thành ComboBoxColumns, một số TextBoxColumns, v.v.
Vì vậy, bây giờ khi tôi đã thiết lập xong các cột này, tôi có thể chuyển sang một lưới khác và nhập dữ liệu của mình. Ví dụ: tôi có thể đã tạo (trong Lưới 1) một cột có tên "Tổng tiền lương hàng năm" với các giá trị số được nhập vào đó. Một cột khác có tên "Giáo dục" chứa "0=NoEducation", "1=Cấp độ Cao đẳng", "3=Đại học", v.v. Các nhãn được hiển thị dưới dạng văn bản trong hộp tổ hợp và sau đó công cụ thống kê phía sau tôi chọn các giá trị tương ứng (0-3) để tính toán (tức là các biến thứ tự, danh nghĩa).
Rất tốt. Trong WinForms, về cơ bản tôi có thể tạo tất cả các cột theo cách thủ công bằng mã và sau đó thêm dữ liệu của mình vào các ô/hàng tương ứng. Bây giờ trong WPF, tôi nghĩ điều này phải dễ thực hiện. Tuy nhiên, ngày hôm qua tôi đã bắt đầu sử dụng ICustomPropertyDescriptor và nó (có thể tôi quá dày) không mang lại cho tôi kết quả như mong muốn.
Về cơ bản, tôi chỉ cần có khả năng tạo động các cột (và hàng) với các bố cục, điều khiển khác nhau (hộp tổ hợp, đầu vào đơn giản, ngày giờ) dựa trên dữ liệu tôi có. Nhưng tôi thực sự không biết phải làm gì?
Để tóm tắt:
Lưới dữ liệu 1
- Mục đích là hiển thị các cột đã được chỉ định trong DataGrid 2
- Trong một hàng, người dùng có thể thêm bất kỳ loại dữ liệu nào vào hàng bên dưới cột nếu đặc tả cột cho phép
Lưới dữ liệu 2
- Mỗi hàng trong lưới này đại diện cho một cột trong DataGrid 1
- Chứa các trường như tên/tiêu đề, kiểu dữ liệu, hành vi xác thực, giá trị mặc định, định dạng dữ liệu, v.v.
- Cũng chứa một chức năng có thể thiết lập cách nó được hiển thị. Người dùng có thể chọn, ví dụ: ComboBoxColumn (và thêm các tùy chọn có sẵn), DateTime, TextBox đơn giản, CheckBox, v.v.
- Sau khi thêm một hàng, nó sẽ tự động xuất hiện dưới dạng cột mới trong DataGrid 1
Nếu có bất kỳ gợi ý nào đi đúng hướng, tôi sẽ biết ơn. trướcCảm ơn rất nhiều! :)
Tôi là một lập trình viên xuất sắc, rất giỏi!