Tôi đang sử dụng mẫu M-V-VM trong một ứng dụng WPF. Tôi ràng buộc một ViewModel đến một ContentControl và sử dụng một mẫu dữ liệu được định nghĩa trong tài nguyên cửa sổ để hiển thị khung nhìn (một UserControl) cho ViewModel đó.Ràng buộc với một lệnh trong một DataGrid
Trong ViewModel, tôi có một bộ sưu tập các mục. Tôi đang ràng buộc bộ sưu tập đó vào lưới dữ liệu được cung cấp trong bộ công cụ WPF. Cũng trong mô hình khung nhìn, tôi có một lệnh RemoveItem được định nghĩa để lấy một đối số cho ID mục cần xóa.
Làm cách nào để liên kết với lệnh đó trong lưới dữ liệu? Ngữ cảnh dữ liệu của lưới là bộ sưu tập, vì vậy, chẳng hạn như:
<Button Command="{Binding Path=RemoveCommand}" CommandParameter="{Binding Path=id}">X</Button>
không hoạt động - không thể tìm thấy lệnh. Tôi nghĩ rằng tôi cần phải làm RelativeSource ràng buộc, nhưng nó sẽ trông như thế nào? Loại tổ tiên có phải là UserControl hay ContentControl không? ViewModel của tôi ở đâu là DataContext?
Hoặc tôi có phải ra khỏi đây không?
Tuyệt vời. Cảm ơn, Kent! –
Chào mừng bạn. Một cách khác để làm điều này là để lộ một bộ sưu tập các mô hình xem con chứ không phải là một tập hợp các mục dữ liệu. Sau đó, các mô hình xem con đó có thể có một thuộc tính để hiển thị lệnh, giúp bạn tránh được việc giới thiệu các ràng buộc dễ vỡ như thế này. –
Cảm ơn bạn đã giải quyết được vấn đề của tôi. –