我有一个balloon tool tip that act as taskbar notifier。 该工具提示是用户控件类。 我的情况是:我有一个窗口,上面有一些单击方法和一个工具提示。 这种情况就像在窗口的倒数计时器方法中经过“ X”时间之后,工具提示将弹出,提示是/否按钮(您是否还在使用它?)
当我尝试在用户控件类中调用窗口的方法时,通常使用此代码
//inside tooltip user control class
System.Windows.Application.Current.Windows.OfType<My_Window>().SingleOrDefault(x => x.IsActive).My_Window_Method();
但是,当我最小化窗口或单击未突出显示窗口的任何内容时,应用程序会告知“对象引用未设置为对象的实例”,并指向上面的相同代码。
//inside tolltip usercontrol class ( same code as above)
private void Yes_Click(object sender, RoutedEventArgs e)
{
System.Windows.Application.Current.Windows.OfType<My_Window>().SingleOrDefault(x => x.IsActive).My_Window_Method();
TaskbarIcon taskbarIcon = TaskbarIcon.GetParentTaskbarIcon(this);
taskbarIcon.CloseBalloon();
}
所以我的问题是:在缩小应用程序或未突出显示应用程序时,是否有解决方案可以安全地在usercontroll类内调用window的方法?谢谢
答案 0 :(得分:0)
当您最小化焦点或将焦点设置为其他任何东西时,由于窗口不再具有焦点,因此isactive变为false。
https://docs.microsoft.com/en-us/dotnet/api/system.windows.window.isactive?view=netframework-4.7.2
如果没有任何条件,Singleordefault将返回null。
因此,我建议您删除未激活的支票。
System.Windows.Application.Current.Windows.OfType<My_Window>().SingleOrDefault).My_Window_Method();
但是我也建议您考虑去耦并使用pub子模式,例如mvvmlight Messenger。