Please ensure that
this.KeyPreview = true;
is set correctly.
Also note that in WPF events are bubbled or tunneled. As a result, events are sometimes not handled where you expect them to be handled.
Go through
To bubble or tunnel basic WPF events[
^] for a better explanation.
Further,
PreviewKeyDown
is a tunneling event and is easier handled at the top of the visual tree i.e. window level.