一、基本方法:直接实例化并显示窗口
1. 普通窗口(无参数)
- 适用场景:简单的弹出窗口,无需传递数据。
private void Button_Click(object sender, RoutedEventArgs e)
{
var newWindow = new MyWindow(); // 实例化新窗口
newWindow.Show(); // 非模态显示(用户可继续操作原窗口)
// 或 newWindow.ShowDialog(); // 模态显示(阻塞原窗口,直到新窗口关闭)
}
- 非模态窗口(
Show()
):用户可同时操作原窗口和新窗口。 - 模态窗口(
ShowDialog()
):强制用户先关闭新窗口,才能操作原窗口。
二、传递数据到新窗口
1. 通过构造函数传递
- 适用场景:新窗口需要初始化数据(如用户ID、标题等)。
// 新窗口的构造函数
public MyWindow(string title)
{
InitializeComponent();
this.Title = title; // 设置窗口标题
}
// 按钮点击事件
private void Button_Click(object sender, RoutedEventArgs e)
{
var newWindow = new MyWindow("Custom Title");
newWindow.Show();
}
通过公共属性传递
- 适用场景:需要在新窗口打开后动态更新数据。
// 新窗口的公共属性
public string Data { get; set; }
// 按钮点击事件
private void Button_Click(object sender, RoutedEventArgs e)
{
var newWindow = new MyWindow();
newWindow.Data = "Hello from Main Window"; // 设置数据
newWindow.Show();
}
三、返回数据到原窗口
1. 模态窗口 + 返回值
- 适用场景:新窗口需要返回用户输入(如对话框的确认/取消)。
// 新窗口(模态)
public partial class InputWindow : Window
{
public string UserInput { get; private