Tôi làm cách nào để sử dụng RelayCommand
trong wpf?Làm cách nào để sử dụng RelayCommand trong wpf?
Trả lời
Lệnh chuyển tiếp không tồn tại trong WPF, nó chỉ là một lớp bên ngoài được nâng lên nổi bật sau khi được xác định trong this MSDN article. Bạn cần tự viết nó nếu bạn muốn sử dụng nó.
Nếu không, bạn có thể cho bạn lệnh Đại biểu từ bộ công cụ WPF here có một chút chức năng bổ sung trên mã RelayCommand.
Ah, câu hỏi đã thay đổi khi tôi nhập câu trả lời này. Giả sử rằng bạn đang sử dụng RelayCommand như được định nghĩa ở trên, bạn cần cung cấp nó với một hoặc hai đại biểu, một hàm trả về một bool để xác định xem lệnh có đang ở trạng thái hợp lệ hay không, và thứ hai không trả về gì và thực sự chạy chỉ huy. Nếu bạn không cung cấp ủy nhiệm "CanRun" thì lệnh sẽ xem xét rằng nó luôn ở trạng thái hợp lệ. Mã được sử dụng trong bài viết:
RelayCommand _saveCommand;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(param => this.Save(),
param => this.CanSave);
}
return _saveCommand;
}
}
Khai báo một RelayCommand sẽ gọi phương thức Save() khi kích hoạt và trả lại thuộc tính CanSave làm kiểm tra tính hợp lệ. Khi lệnh này bị ràng buộc với một nút trong WPF, thuộc tính IsEnabled của Button sẽ khớp với thuộc tính CanSave của ViewModel và khi nút được bấm (giả sử nó được kích hoạt), phương thức Save() sẽ được gọi trên ViewModel.
Để thay thế cho việc tạo các trình bao bọc RelayCommand
cho tất cả các phương pháp của bạn, tôi có thể đề xuất một thư viện và nguồn miễn phí cho phép bạn sử dụng liên kết {BindTo Save()}
. Tôi tạo ra nó để đơn giản hóa các ràng buộc của tôi. Nó cũng làm cho ràng buộc tương đối dễ dàng hơn nhiều. Bạn có thể tìm thấy nó ở đây: http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html
Trông rất đẹp, mặc dù không kiểm tra nó. Nhưng tôi khuyên bạn nên cải thiện bài đăng trên blog và giải thích chi tiết triển khai. Mặc dù gửi mã cho Github sẽ rất hay. Và cũng xem xét việc đặt nhiều hơn (một số!) Mã trên câu trả lời này trên StackOverflow. –
+1 cho đề xuất của @ MD.Unicorn để đăng mã trên GitHub (hoặc tương tự). Nó cũng có thể được tốt đẹp nếu thư viện đã có sẵn như là một gói NuGet. –
- 1. Làm thế nào để sử dụng CommandParameter với một RelayCommand?
- 2. Làm thế nào để sử dụng ContextMenu UserControl trong WPF?
- 3. RelayCommand trong C#
- 4. Làm cách nào để sử dụng CaptureMouse hoặc Mouse.Capture trong ứng dụng C# WPF của tôi?
- 5. Ghim một RelayCommand
- 6. WPF Cách chính xác để sử dụng tệp SVG làm biểu tượng trong WPF
- 7. Làm thế nào để bắt đầu sử dụng WCF/WPF?
- 8. Làm cách nào để sử dụng tài nguyên toàn cầu trong WPF?
- 9. Làm cách nào để sử dụng biểu tượng là tài nguyên trong WPF?
- 10. RelayCommand CanExecute hành vi
- 11. RelayCommand được gọi trong "cũ" DataContext
- 12. Có cách nào để sử dụng tệp phông ODTTF trong ứng dụng WPF của tôi không?
- 13. Làm cách nào để bạn liên kết lệnh với MenuItem (WPF)?
- 14. Làm cách nào để tránh lệnh lộn xộn trong ViewModel?
- 15. Làm thế nào để sử dụng stringformat trong multibinding trong WPF XAML
- 16. Làm thế nào để tạo treeview từ tệp XML bằng cách sử dụng WPF?
- 17. CanExecute trên RelayCommand <T> không làm việc
- 18. Làm cách nào để tạo trang cơ sở trong WPF?
- 19. Sử dụng process.start trong ứng dụng wpf để gọi một ứng dụng wpf khác
- 20. Sử dụng MonoGame trong WPF
- 21. Làm cách nào để định dạng số vị trí thập phân trong wpf bằng cách sử dụng kiểu/mẫu?
- 22. Làm cách nào để chuyển đổi chế độ hiển thị menu chính bằng cách sử dụng phím Alt trong WPF?
- 23. Làm thế nào để sử dụng DateTimePicker ràng buộc trong WPF
- 24. Cách sử dụng tệp App.config trong các ứng dụng WPF?
- 25. Bất kỳ cách nào để tái sử dụng Bindings trong WPF?
- 26. Có cách nào để sử dụng một từ điển tiếng Anh Úc trong WPF
- 27. Làm thế nào để sử dụng một ItemTemplateSelector cùng với một HeaderTemplate trong một ListView WPF?
- 28. Làm cách nào để có được DPI trong WPF?
- 29. Làm cách nào để ẩn một hàng trong lưới WPF?
- 30. Làm cách nào để thực hiện nút gửi trong WPF?
Tôi đã có một lợi thế vì tôi đã tìm kiếm nó hôm qua cho câu trả lời này: http://stackoverflow.com/questions/858268/in-mvvm-what-is-the-best-way- for-the-viewmodel-to-respond-to-user-actions-in-the/858303 # 858303 –
Tôi muốn các mẫu mã bài viết của MSDN không phải tất cả đều lộn xộn với nhau, giống như vậy trong nhiều tháng nay, bất cứ ai biết một tấm gương hoặc một cái gì đó cho thấy chúng bình thường? –
Không chính xác/lỗi thời Lệnh chuyển tiếp không tồn tại, nhưng một phần của https://mvvmlight.codeplex.com/ toolkit – MikeT