"Setting e.Handled as true from within the right click event of the Appointment control should work IMO."
It works if I don't use AddRightClickElements or AddTrigger methods, only right click events for Appointment and canvas.
"Otherwise you can use the GetClickedElements<T> function from within the IsOpening event of the PopupMenu itself to determine which control was clicked and disable unwanted menus from there using their IsOpeningCancelled property. You might as well just
set e.Handled to true from there as well."
I can only see function named GetClickedElement<T>. How to use IsOpeningCancelled property? Can you show an example code? IsOpening is a boolean value, not event, I think you meant Opening. If so, I cannot use e.Handled in Opening event.
"The Open and OpenNextTo method offer all the control you need on when an where you menu is placed in your application. In your case you might use either of them in the right click event of your canvas but this is just my 2 cents."
Ok, these functions are helpful. But I've got another problem. How to make it show new Appointment and context menu every time I right click on canvas? At this moment I have to right click twice, the first time it closes the previous context menu, second
click opens the new context menu. How to close previous menu and show the new one in just one click? I'm not using AddRightClickElements and AddTrigger methods, because getting rid of them solved my first issue.