Is your dialog truly modal? In other words, when you execute some statement to show the dialog, does it not return until the user has chosen some answer?
If that were the case, everything ought to be working OK.
But that is obviously not the case, so it seems that your dialog is not modal, which means it is acting asynchronously to the events happening in the LinkingTool. So the code in the LinkingTool is finishing normally, without any input from the dialog.
Why not allow the normal behavior of the LinkingTool occur? Afterwards, in a Diagram.LinkDrawn event handler you can show your dialog. If the user chooses not to complete the link, you can delete the Link.
In addition, you can implement link validation in order to prevent the user from drawing links that clearly should not be allowed. Read the section about "Link Validation" in the GoXamIntro.pdf.