There is no way to achieve this scenario out of the box. So what you can try is to hook on the WindowStateChanged event and check if the state is minimized and if so to change the window position as shown in the attached project.
The tricky part comes with the maximize state as the window would take all its available area. Therefore what you can try is to restrict the window to a specific area. In order to achieve that you can set IsRestrictedWhenMaximized="True" IsRestricted="True" and on the Loaded event of the window to set the restriction to an area - this.RestrictedAreaMargin = new Thickness(100);
Please note that this is not designed to be changed run time so it may lead to some unexpected behavior.