【发布时间】:2014-03-31 12:36:54
【问题描述】:
我是 WPF 新手,一直在寻找答案,这肯定不难吗?
我创建了一个主窗口,其中包含指向多个窗口的链接,并且我希望它们以非模式方式彼此并排运行,但我不想打开 SAME 窗口的多个实例。
简单来说,我可以同时打开 Windows A、B、C,但不能同时打开 Windows、A、A、B、C、C。
我需要检查我试图打开的窗口(在本例中为 EditSettings)。
如果打开 - 激活它
如果没有打开,打开它。
我在 Main 中有以下代码,但它不起作用。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
EditSettings winEditSettings = new EditSettings();
string isOpen = null;
if (isOpen == "true")
{
winEditSettings.Activate();
}
else
{
winEditSettings.Show();
isOpen = "true";
}
}
}
现在我知道这个逻辑有什么问题 - 每次我按下按钮打开 EditSettings 时,它的设置 isOpen 再次为 null。如果我没有为 isOpen 设置值,If 条件就会中断。
我可以将变量“isOpen”初始化为 MenuItem_Click 方法之外的公共变量,但是我想我需要为我创建的每个窗口创建一个 isOpen 变量!肯定有更好的方法吗?
我尝试的另一个选项是:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
EditSettings winEditSettings = new EditSettings();
if (winEditSettings.IsLoaded)
{
winEditSettings.Activate();
}
else { winEditSettings.Show(); }
我不知道为什么这不起作用,我尝试了 isVisible、isLoaded、isActive - 没有什么能阻止窗口多次打开。感谢您的帮助!
【问题讨论】: