In case someone else runs into the same problem, these were the solutions I found:
For overriding the Windows 10 snapping/resizing to the edge of the screen when dragging, I changed the resize mode to NoResize and then changed back to my preferred resize mode after the drag was complete.
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
this.ResizeMode = ResizeMode.NoResize;
this.DragMove();
this.ResizeMode = ResizeMode.CanResizeWithGrip;
}
}
For overriding the Windows Key + Arrow combination, I did a similar thing by catching the Windows Key press in Preview Key Up/Down:
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.LWin || e.Key == Key.RWin)
{
this.ResizeMode = ResizeMode.NoResize;
}
}
private void Window_PreviewKeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.LWin || e.Key == Key.RWin)
{
this.ResizeMode = ResizeMode.CanResizeWithGrip;
}
}
I suppose you could also catch the arrow key press after the Window Key if you wanted to modify this key combination to do something else (such as moving to a different window, but not resizing).
If anyone has a better solution, I'm all ears, but this seemed to work for me and seemed pretty simple.