为什么不这样做? - 获取隐藏的窗口

时间:2012-01-14 21:21:39

标签: c# wpf window find

在我的应用程序中,我使用隐藏和可见的porperties来使窗口显示或不显示给用户。 现在在某些时候,当我在Window1中时,我想检查是否还有一个主窗口的实例,它是隐藏的。 谷歌搜索,我发现(也在SO)我需要使用此代码:

Window deze = Application.Current.Windows.OfType<MainWindow>().Where(x => x.Name == "MainWindow").FirstOrDefault();   

但无论我填写的是OfType<MainWindow>部分还是"MainWindow",它都会保持返回null,即使我100%确定必须有1个实例。

签入主窗口的代码,在解决方案资源管理器(visual express)中调用“mainWindow.xaml” 我看到代码看起来像这样:

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {      
        //creating the exitmessage for use later on, after all, we want to use this in an other method.


        public MainWindow()
        {
......
        }

我真的不知道为什么,当我100%确定主窗口有一个隐藏的实例时,为什么“Window deze”会一直返回null。

有人对此有所了解吗? 我完全忽略了一些合乎逻辑的解决方案?

提前完成!

2 个答案:

答案 0 :(得分:1)

Where是多余的,因为您会看到它检查特定名称,这与您无关。

答案 1 :(得分:1)

试试这个:

Window deze = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();

您正在做的是查看名为name的窗口的属性,并查看它是否与字符串“MainWindow”匹配。它不是。由于您已经在寻找这种类型(只有一种类型),您只需要将第一个返回到您的变量。