【发布时间】:2018-06-10 16:39:40
【问题描述】:
我正在制作启动 WPF 窗口的 Outlook vsto 插件。
它工作正常,但是当我关闭 WPF 窗口并尝试打开另一个窗口时,我得到了一个
不能在同一个 AppDomain 中创建多个 System.Windows.Application 实例。
异常。
我知道 Application 类是单例的,我理解异常,但我不知道如何在窗口关闭时关闭应用程序。我尝试在 App.xaml 中设置ShutdownMode 并在窗口关闭时设置App.Shutdown(),但没有成功。有关如何使其工作的任何建议?
App.xaml
<Application x:Class="OutlookAddIn3.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:OutlookAddIn3"
StartupUri="MainWindow.xaml"
ShutdownMode="OnMainWindowClose">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
App.xaml.cs
public partial class App : Application
{
public static App myapp;
public App()
{
InitializeComponent();
}
public static void EnsureApplicationResources()
{
if (App.myapp == null)
{
myapp = new App();
}
}
}
MainWindow.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Closing(object sender, EventArgs e)
{
//App.Current.Shutdown();
App.myapp.Shutdown();
}
}
Ribbon1.cs
public partial class Ribbon1
{
private void button1_Click(object sender, RibbonControlEventArgs e)
{
App.EnsureApplicationResources();
}
}
【问题讨论】: