2010-03-19 1 views

Trả lời

10

Tôi đoán có rất nhiều ExecuteHandler có ký hiệu khác. Chỉ cần truyền trình xử lý của bạn tới phiên bản bạn muốn có:

CommandManager.AddExecuteHandler(this, (Action<object,ExecutedRoutedEventArgs>)ExecuteHandler); 
+1

Got it - mới loại đại biểu: CommandManager.AddExecutedHandler (điều này, mới ExecutedRoutedEventHandler (ExecuteHandler)); Thực ra ngay cả điều đó không cần thiết, mã ban đầu của tôi bây giờ có vẻ hoạt động tốt. Tôi đã không thực sự có hai định nghĩa phương thức. Tôi nghĩ rằng đây có thể chỉ là một lỗi trong VS, nơi thông báo lỗi được gây ra từ một số tập tin đối tượng tạm thời. Sự kì lạ. –

1

Bạn không thể chuyển trực tiếp "phương thức" làm tham số, bạn cần chuyển biểu thức. Bạn có thể quấn phương pháp này thành một đại biểu:

CommandManager.AddExecutedHandler(this, new ExecutedRoutedEventHandler(ExecuteHandler)); 
CommandManager.AddExecutedHandler(this, (Action<object,ExecutedRoutedEventArgs>) ExecuteHandler); 

hoặc vào một lambda - đó là yêu thích cá nhân của tôi, vì bạn không cần phải ghi nhớ một tên đại biểu:

CommandManager.AddExecutedHandler(this, (s, e) => ExecuteHandler(s, e));