代码之家  ›  专栏  ›  技术社区  ›  Aaron Powell

在WPF应用程序中创建新窗口

  •  0
  • Aaron Powell  · 技术社区  · 16 年前

    通知

    foreach(var feedNotification in newFeedNotifications) {
      var popupWindow = new PopupWindow() { ... };
      popupWindow.Show();
    }
    

    非常

    我正在使用。NET 3.5 SP1框架

    4 回复  |  直到 16 年前
        1
  •  2
  •   Dustin Hoffman    16 年前

    我不是 100% 在这方面,但我认为将窗口的新实例生成到主窗口(或其中的对象)维护的集合中会更有效。然后,您可以创建一个可以由新生成的窗口订阅的事件。一旦新窗口正在监视主窗口或对象的更新,您就可以在主窗口上触发事件,让您的通知窗口处理其余的事情。

    就通知窗口跟踪而言,您可以允许通知窗口通过另一个事件连接收到有新窗口要显示的提醒,并将其传递给它们(或允许它们从主对象中检索它)。您可以通过跟踪窗口何时获得焦点,将该窗口直接放置在当前可见的通知下方。因此,最后一个获得焦点的窗口是最后一次查看的窗口。一旦你有了现有的窗口,只需在同一位置(或稍微偏移)创建一个新窗口,然后调用顶部窗口的焦点即可。

    通过焦点检查跟踪活动窗口的另一种方法是,只查看主窗口中包含的窗口对象的集合,因为该集合将按创建顺序排列。希望这能有所帮助。

    this link 一分钟前,关于具有一些有用属性的弹出控件。

        2
  •  1
  •   Andy    16 年前

    是否绝对有必要为每个通知创建一个新窗口?虽然我还没有衡量这一点,但创建新的WPF窗口可能是一项CPU密集型任务。如果是这样的话,那么你就无法改变代码以使用更少的CPU。

        3
  •  1
  •   Ana Betts    16 年前
        4
  •  0
  •   Sergey Aldoukhov    16 年前

    我不确定CPU的利用率(而且我所有的机器上都有双核和良好的GPU,我不太在乎),但看起来你是在做一个“气球弹出”,重用的好项目是 codeproject WPF NotifyIcon (这是我在自己的RSS阅读器中使用的)