سؤال

وكيف تحصل على اثنين من الضوابط لا علاقة لها رفع الحدث المخصص نفسه؟ كل الأمثلة التي رأيتها حتى الآن وقد حدث تعريف داخل عنصر تحكم واحد، يجب أن يكون نهجا مختلفا؟

وعلى سبيل المثال. أود أن رفع الحدث محتدما مخصصة من معالج تشغيل OnFocus لزر والنص.

هل كانت مفيدة؟

المحلول

أولا اسمحوا لي أن أقول سؤالك لا يجعل من الواضح أنك لا تريد استخدام القائمة <لأ href = "http://msdn.microsoft.com/en-us/library/system.windows .uielement.gotfocusevent.aspx "يختلط =" noreferrer "> UIElement.GotFocusEvent ، ولكن سوف أفترض أنك تعرف عن ذلك، ويكون لديك من أسباب لعدم استخدامه.

ويمكنك التسجيل دائما حدث مخصص في فئة ثابتة، ورفع ذلك إلى أي مكان تريد. و فئة لوحة المفاتيح لا مع كل أحداثها (على سبيل المثال <لأ href = "http://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.keydownevent(VS.85).aspx" يختلط = "noreferrer" > Keyboard.KeyDownEvent ).

public static class RoutedEventUtility
{
    public static readonly RoutedEvent MyCustomEvent = EventManager.RegisterRoutedEvent("MyCustomEvent", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(RoutedEventUtility));
}

ويمكنك رفع الحدث مثلما تفعل أي RoutedEvent آخرين.

RoutedEventArgs args = new RoutedEventArgs(RoutedEventUtility.MyCustomEvent);
RaiseEvent(args);

إذا كنت تريد فئة أخرى إلى صاحب الحدث كحقل العام ثم سوف تحتاج إلى إضافة مالك.

public class MyCustomControl : Control
{
    public static readonly RoutedEvent MyCustomEvent = RoutedEventUtility.MyCustomEvent.AddOwner(typeof(MyCustomControl));
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top