如何使用C#在WPF中创建两个独立的窗口

7

我希望在XAML中创建两个独立的窗口,并且能够从代码部分分别控制它们。你有任何想法如何实现吗?如果你能提供一些代码示例,我将不胜感激。

谢谢!


为什么不直接创建两个窗口呢?它们必须在同一个XAML文件中吗?如果是这样,为什么? - Martin Hennings
我尝试了谷歌搜索,但它给我的结果是这样的:一个大的主窗口和一个小窗口在这个窗口内部。我想尝试的是在不同的位置分别控制它们。而不是在同一个窗口内...@Martin: 它们不必在同一个XAML文件中,但它们必须从一段代码中进行控制。 - Samet
1个回答

11

在你的项目中添加第二个Window(第一个是MainWindow.xaml)(右键单击项目-> 添加-> Window)。我们称其为BobbyWindow。

在MainWindow.xaml.cs的构造函数中调用:

BobbyWindow bWin = new BobbyWindow();
bwin.Owner = this;
bWin.Show(); 

看这里。

编辑:根据评论补充的信息

这个的主要区别是:

public MainWindow() 
{ 
   InitializeComponent(); 
   Window1 bWin = new Window1(); 
   bWin.Owner = this; 
   bWin.Show(); 
}

并且:

Window1 bWin = new Window1(); 

public MainWindow() 
    { 
       InitializeComponent(); 

       bWin.Owner = this; 
       bWin.Show(); 
    }

第一种情况下,bWin是MainWindow()构造函数内部的局部变量,这意味着它仅存在于MainWindow()括号内。
在第二种情况下,bWin是类的局部变量,这意味着它只能从MainWindow类的边界内访问。


抱歉耽搁了,但我在另一个窗口中使用了“this”。我尝试给它起另一个名字来调用,但没有成功。我在这个主题上不是专业人士。如果您能告诉我应该写什么,我将不胜感激。谢谢... - Samet
"this" 指当前对象。根据你在哪里写 "this",它指向不同的对象。 - Louis Kottmann
我有一个主窗口和你的窗口。我使用“this”来处理主窗口的许多事情。因此,我必须使用其他东西来到达你的窗口。我的意思是我不能这样做:BobbyWindow.Visibility =.... 它不接受这个。我使用this.Visibility来处理主窗口。那么我如何调用你的窗口来到达它呢? - Samet
哦,我明白了,把第一行放在方法外面,然后你就可以在主窗口的任何地方设置dbWin.Visibility = ... - Louis Kottmann
也许我把这段小代码放错了地方。我把这3行代码放在这里:public MainWindow() { InitializeComponent(); Window1 bWin = new Window1(); bWin.Owner = this; bWin.Show(); }所以,如果我像这样写,我就无法从任何地方访问bWin。让我尝试将第一行放在方法外面。 - Samet
是的,我把第一行放在方法外面,现在可以访问它了。成功了 :) 谢谢你的帮助。 - Samet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接