Вопрос о событии WPF Custom Routed

Вы можете использовать приведенный ниже код, который использует простой цикл for:

l = ['RATED','  Awesome food at a good price .', 'Delivery was very quick even on New Year’s Eve .', 'Please try crispy corn and veg noodles From this place .', 'Taste maintained .', 'Like', 
     '1', 'Comment', '0', 'Share', 'Divyansh Agarwal', '1 Review', 'Follow', '3 days ago',
     'RATED', '  I have tried schezwan noodles and the momos with kitkat shake', "And I would say just one word it's best for the best reasonable rates.... Gotta recommend it to everyone", 'Like'
]

st, ed, aa = None, None, []
for k, v in enumerate(l):
    if v == "RATED":
        st = k
    if v == "Like":
        ed = k
    if st != None and ed!= None:
        aa.extend(l[st+1: ed])
        st = None
        ed = None

print (aa)

# ['  Awesome food at a good price .', 'Delivery was very quick even on New Year’s Eve .', 'Please try crispy corn and veg noodles From this place .', 'Taste maintained .', '  I have tried schezwan noodles and the momos with kitkat shake', "And I would say just one word it's best for the best reasonable rates.... Gotta recommend it to everyone"]
7
задан Dave Clemmer 26 July 2011 в 20:48
поделиться

1 ответ

Прежде всего позвольте мне сказать, что Ваш вопрос не проясняет, что Вы не хотите использовать существующий UIElement. GotFocusEvent, но я предположу, что Вы знаете об этом и имеете свои причины того, что не использовался он.

Можно всегда регистрировать пользовательское событие на статическом классе и повышать его везде, где Вы хотите. Класс Клавиатуры делает со всеми его событиями (например, Клавиатура. 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));
}
8
ответ дан 7 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: