2009-05-22 44 views
6

Làm thế nào để cung cấp một hoàn tác/làm lại bằng cách sử dụng các ràng buộc trong WPF?Hoàn tác trong các ràng buộc WPF

ví dụ: Bạn thực hiện chế độ xem chi tiết chính với các liên kết. Sau khi chỉnh sửa các thay đổi của bạn được lưu tự động bằng cách sử dụng tính năng ràng buộc. Sau đó, bạn muốn hoàn tác các thay đổi.

Có điều gì đó sẵn sàng để sử dụng trong ràng buộc cho WPF không? WPF có cung cấp một số cấu trúc hoặc giao diện không?

Câu hỏi này không phải là về cách triển khai hoàn tác/làm lại bằng ngăn xếp.

Trả lời

5

Hãy xem giao diện IEditableObject. Nó cho phép bạn chụp nhanh đối tượng thực hiện nó và sau đó quay lại ảnh chụp nhanh đó nếu cần.

+0

WPF có sử dụng giao diện IEditableObject, tức là gọi các phương thức của nó? –

+0

Tùy thuộc vào điều khiển cụ thể bạn đang sử dụng. Ví dụ, điều khiển MS DataGrid sẽ. –

1

Bạn đang kết nối dữ liệu gì?

Nếu bạn đang databinding đến một số liệu bạn có thể hoàn tác các thay đổi bằng cách sử dụng các DataSet.RejectChanges() phương pháp cung cấp bạn chưa được gọi là DataSet.AcceptChanges().

+0

Điều gì về ràng buộc chung, ví dụ: cho một đối tượng có nguồn gốc từ DependencyObject, hoặc kiểm soát để kiểm soát ràng buộc? –

+0

Như Kent nói nếu đối tượng thực hiện IEditableObject bạn đang quids trong nhưng nếu không thì bạn cần phải làm điều này bằng tay. –

1

Bạn có thể thấy Khung hoàn tác được giám sát hữu ích. http://muf.codeplex.com/

Nó không sử dụng mẫu lệnh "từ trên xuống" mà thay vào đó sẽ theo dõi các thay đổi khi chúng xảy ra và cho phép bạn đặt đại biểu trên ngăn hoàn tác sẽ đảo ngược thay đổi.

Trong trường hợp của bạn, nếu bạn đang ràng buộc với mô hình/khung nhìn cơ bản, bạn có thể kết thúc khung để nắm bắt những thay đổi này và sau đó hoàn tác/làm lại chúng khi cần. Nếu mô hình triển khai INotifyPropertyChanged và sử dụng ObservableCollections, nó sẽ tự động phản ánh các hành động được thực hiện trên mô hình, bao gồm các hành động hoàn tác/làm lại.

Bạn có thể tìm thêm thông tin và tài liệu trên trang web codeplex tại http://muf.codeplex.com/.

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