将Application作为参数传递给WPF

时间:2011-07-22 19:07:55

标签: wpf casting

我有一个解决方案与几个项目相结合。 这是我的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.MainWindow siteManagerDialog。

我试过了:

SiteDll.MainWindow siteManagerDialog = new SiteDll.MainWindow((App)Application.Current);
siteManagerDialog.Show();

并将其转换为SiteDll.MainWindow构造函数:

public MainWindow(object me)
{
    Application app = ((App)me);
    InitializeComponent();
}

但我得到了投射错误...... 这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您正在将YourApplication1.App类型转换为YourApplication2.App,它们是不同类型的。这就是为什么你得到一个无效的强制转换异常。

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


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