Trước hết hãy để tôi nói câu hỏi của bạn không rõ ràng là bạn không muốn sử dụng UIElement.GotFocusEvent hiện có, nhưng tôi sẽ giả sử bạn biết và có lý do bạn không sử dụng nó.
Bạn luôn có thể đăng ký sự kiện tùy chỉnh trên một lớp tĩnh và nâng cao nó ở bất cứ đâu bạn muốn. Keyboard class thực hiện với tất cả các sự kiện của nó (ví dụ: Keyboard.KeyDownEvent).
public static class RoutedEventUtility
{
public static readonly RoutedEvent MyCustomEvent = EventManager.RegisterRoutedEvent("MyCustomEvent", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(RoutedEventUtility));
}
Bạn tăng sự kiện giống như bất kỳ RoutedEvent nào khác.
RoutedEventArgs args = new RoutedEventArgs(RoutedEventUtility.MyCustomEvent);
RaiseEvent(args);
Nếu bạn muốn lớp khác sở hữu sự kiện dưới dạng trường công cộng thì bạn sẽ cần thêm chủ sở hữu.
public class MyCustomControl : Control
{
public static readonly RoutedEvent MyCustomEvent = RoutedEventUtility.MyCustomEvent.AddOwner(typeof(MyCustomControl));
}
Nguồn
2008-11-10 04:43:42
Cảm ơn. Xin lỗi, có giả định chính xác về UIElement.GotFocusEvent. – MJS