在WPF中将应用程序作为参数传递

在WPF中将应用程序作为参数传递,wpf,casting,Wpf,Casting,我有一个结合了几个项目的解决方案。 这是我的App.xaml.cs public partial class App : Application { private SiteManager _siteManager = new SiteManager(); public SiteManager SiteManager { get { return _siteManager; } set { _siteManager = value; }

我有一个结合了几个项目的解决方案。 这是我的App.xaml.cs

public partial class App : Application
{
     private SiteManager _siteManager = new SiteManager();

    public SiteManager SiteManager
    {
        get { return _siteManager; }
        set { _siteManager = value; }
    }
}
在运行期间,我调用同一解决方案中的另一个项目

SiteDll.MainWindow siteManagerDialog = new SiteDll.MainWindow();
siteManagerDialog.Show();
但我不知道如何将App.xaml.cs中的所有变量传递给SiteDll.main窗口siteManagerDialog

我试过:

SiteDll.MainWindow siteManagerDialog = new SiteDll.MainWindow((App)Application.Current);
siteManagerDialog.Show();
并在SiteDll.MainWindow构造函数中强制转换它:

public MainWindow(object me)
{
    Application app = ((App)me);
    InitializeComponent();
}
但我得到了铸造错误。。。
正确的方法是什么?

您正在将应用程序1.应用程序类型强制转换为不同类型的应用程序2.应用程序。这就是为什么会出现无效的强制转换异常

您可以做的是,您可以将公共变量放在单独的程序集中,并从两个应用程序引用此程序集

编辑 我还建议您添加一个“WPF用户控件库”,然后在使用来自其他程序集的WPF窗口/页面/用户控件时引用它,以防止此类混淆