我想在最小化时使用托盘图标的WPF应用程序。
我使用了wpf NotifyIcon, 我正在使用MEF和Prism
我的引导程序看起来像:
public class Bootstrapper : MefBootstrapper{
protected override System.Windows.DependencyObject CreateShell() {
return Container.GetExportedValue<Shell>();
}
protected override void InitializeShell(){
base.InitializeShell();
Application.Current.MainWindow = (Window)Shell;
Application.Current.MainWindow.Show();
}
protected override void ConfigureAggregateCatalog(){
base.ConfigureAggregateCatalog();
AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Shell).Assembly));
}
}
我将主窗口命名为Shell并添加了[Export]
属性。
在我的NotifyIconViewModel
for show命令中,我使用了
public ICommand ShowWindowCommand{
get{
return new DelegateCommand{
CanExecuteFunc = () => Application.Current.MainWindow == null,
CommandAction = () =>
{
Application.Current.MainWindow = ServiceLocator.Current.GetInstance<Shell>();
Application.Current.MainWindow.Show();
}
};
}
}
但它显示
类型&#39; System.InvalidOperationException&#39;的例外情况发生在System.Core.dll中但未在用户代码中处理 当我尝试获取Shell的实例
时抛出
我对MEF,Prism很新。我可以得到一些帮助吗?
更新: 单击关闭按钮时,将触发以下事件以关闭MainWindow。
public ICommand HideWindowCommand{
get{
return new DelegateCommand{
CommandAction = () => Application.Current.MainWindow.Close(),
CanExecuteFunc = () => Application.Current.MainWindow != null
};
}
}