将startupuri更改为派生的窗口类

时间:2018-06-16 16:48:02

标签: c# wpf

让我们说在WPF项目中我已经构建了一个抽象窗口类,所以我可以为我创建的每个窗口添加一些基本属性:

// Abstract window, based on normal window
public abstract partial class abs_window : Window
{
    // example of added property to my abstract class
    protected int xxx = 25;

    public abs_window()
    {
        InitializeComponent();
    }

}

// Another class dervied from my abstract window 
public partial class derivedWindow : abs_window
{
    void aa()
    {
        // Random method aa() to show access to the protected xxx int
        MessageBox.Show(Convert.ToString(xxx));
    }
}

所以,这编译得很好,但我的StartUpUri指向我根本不想要的默认MainWindow ...我希望它直接指向我的双重派生derivedWindow类的新实例?这可能吗?

我试过了两个 StartupUri="abs_window.xaml"StartupUri="derivedWindow.xaml">,但第一个无法正常工作,因为它是抽象的,而第二个不起作用,因为没有现有的.xaml文件

如果我添加一个新的“window”.xaml文件,它只是一个普通的窗口,而不是我的派生类型!?

1 个答案:

答案 0 :(得分:0)

代表汉斯的评论回答,除非他也选择回答:

首先在默认的App类(App.xaml.cs)中创建了一个启动方法,例如Hans'链接here

public partial class App : Application
{
    void App_Startup(object sender, StartupEventArgs e)
    {
        derivedWindow window = new derivedWindow();
        window.Show();
    }
}

但该链接未提及的是更改App.xaml文件,方法是替换StartupUri.xaml似乎始终引用Startup方法StartupUri="MainWindow" {我发现here

Startup="App_Startup" {1}}