Thú vị vấn đề liên quan đến lệnh bắn từ mục menu ngữ cảnh ...Đi qua nguồn gốc của ContextMenu vào lệnh WPF
Tôi muốn bắn một lệnh để chèn một hàng trong kiểm soát của tôi, InsertRowCmd. Lệnh này cần biết vị trí chèn hàng.
Tôi có thể sử dụng Mouse.GetPosition(), nhưng điều đó sẽ cho tôi vị trí của con chuột hiện tại, sẽ nằm trên mục menu. Thay vào đó, tôi muốn lấy nguồn gốc của menu ngữ cảnh.
Có ai có bất kỳ đề xuất nào về cách chuyển nguồn gốc của menu ngữ cảnh làm tham số cho lệnh không?
Mẫu mã:
<UserControl x:Name="MyControl">
<!--...-->
<ContextMenu x:Name="menu">
<MenuItem Header="Insert Row" Command="{x:Static customCommands:MyCommands.InsertRowCmd}" CommandParameter="?"/>
</ContextMenu>
</UserControl>
ý tưởng hiện tại của tôi như sau:
-Sử dụng handler nhấp chuột thay vì để tôi có thể tìm ra nguồn gốc trong mã. Vấn đề là sau đó tôi sẽ phải xử lý cho phép/vô hiệu hóa.
Sự kiện nhấp chuột và lưu gốc của menu ngữ cảnh. Chuyển thông tin đã lưu này vào lệnh. Tôi đã xác minh rằng các sự kiện nhấp chuột kích hoạt trước khi lệnh được thực thi.
Bất kỳ ý tưởng nào?
EDIT:
Tôi đang sử dụng Josh Smith CommandSinkBinding để định tuyến xử lý vào lớp ViewModel của tôi lệnh. Vì vậy, mã xử lý lệnh thực thi không biết gì về khung nhìn.
Tôi nghĩ bạn có nghĩa là "CommandParameter" lúc đầu không "ConverterParameter"? –
Bạn có quan tâm đến việc xây dựng ý tưởng hành vi đính kèm không? –
Có, cảm ơn - cố định và xây dựng. –