Общая техника, которую вы показываете, является наиболее эффективной и простой. Но вы делаете дополнительные задания, которые на самом деле не нужны. Ниже приведена небольшая оптимизация.
elements = []
k1, v1 = heapq.heappop(heap)
elements.append((k1,v1))
while(k1 == heap[0]):
k2, v2 = heapq.heappop(heap)
elements.append((k2,v2))
return elements
Чтобы быть в безопасности, вы, вероятно, должны добавить проверки, чтобы убедиться, что ваша куча не пуста. Проверка heap[0]
, когда в куче нет элементов, будет плохой вещью, как и вызов heapq.heappop
, если куча пуста.
WPF обрабатывает Ваши триггеры в заявленном порядке. Во втором примере передний план очень кратко изменяется на зеленый. Но затем триггер IsMouseOver работает и задерживает цвет к желтому.
IsMouseOver не имеет никаких отношений к IsPressed с точки зрения приоритета. То, что важно, является порядком объявления в XAML триггеров.