解决方案
父窗体:
界面:
<Window x:Class="WPFTest.ParentWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFTest"
mc:Ignorable="d"
Title="父窗体" Height="400" Width="500">
<Grid>
<Button Width="100" Height="20" Click="Button_Click" > 打开子窗体</Button>
</Grid>
</Window>
代码:
double ChildrenWidth = 0;
double ChildrenHeight = 0;
private void Button_Click(object sender, RoutedEventArgs e)
{
ChildrenWindow childrenWindow = new ChildrenWindow();
childrenWindow.Owner = this;
childrenWindow.Show();
ChildrenWidth = childrenWindow.ActualWidth;
ChildrenHeight = childrenWindow.Height;
childrenWindow.ParentMoveAction += ParentMove;
}
private void ParentMove(double childrenLeft, double childrenTop)
{
this.Left = childrenLeft - ((this.ActualWidth - ChildrenWidth) / 2);
this.Top = childrenTop - ((this.ActualHeight - ChildrenHeight) / 2);
}
子窗体:
界面:
<Window x:Class="WPFTest.ChildrenWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFTest"
mc:Ignorable="d"
Title="子窗体" Height="200" Width="400" WindowStartupLocation="CenterOwner" LocationChanged="Window_LocationChanged_1" >
</Window>
代码:
public event Action<double, double> ParentMoveAction;
private void Window_LocationChanged_1(object sender, EventArgs e)
{
ParentMoveAction?.Invoke(this.Left, this.Top);
}
效果

好吧,效果图 不显示
以上代码只是子窗体随父窗体移动。父窗体也想随子窗体移动的话
需要的可通过https://download.youkuaiyun.com/download/weixin_52475977/14953139 下载源码