我试图通过主窗口拖动第二个窗口,每当我移动第一个窗口时,第二个窗口就会随着主窗口一起拖到主窗口的右侧。
无论我已经尝试没有工作,我已经尝试过DragMove(),但它没有移动第二个窗口,它只移动主窗口,我不是真正有经验的c#和WPF。
可以使用以下代码。只计算第一个窗口的最后一个点与其当前位置之间的差值,并将获得的值添加到第二个窗口的位置,当然,所有这些都适用于事件LocationChanged
。
MyWindow1.cs
public partial class MyWindow1 : Window
{
MyWindow2 wnd;
Point last = new Point();
public MyWindow1()
{
InitializeComponent();
last.X = this.Left;
last.Y = this.Top;
}
private void Window_LocationChanged(object sender, EventArgs e)
{
if (wnd != null)
{
wnd.Left = (this.Left - last.X) + wnd.Left;
wnd.Top = (this.Top - last.Y) + wnd.Top;
last.X = this.Left;
last.Y = this.Top;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
wnd = new MyWindow2();
wnd.Show();
}
}
MyWindow1.xaml
<Window x:Class="WpfApp1.MyWindow1"
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:WpfApp1"
mc:Ignorable="d"
Title="MyWindow1" Height="450" Width="800" LocationChanged="Window_LocationChanged">
<StackPanel>
<Button Content="Get Window 2" Width="150" Height="35" VerticalAlignment="Center" Click="Button_Click"></Button>
</StackPanel>
</Window>