首页 > 解决方案 > 将 startupuri 更改为派生窗口类

问题描述

假设在一个 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 文件

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

标签: c#wpf

解决方案


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

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似乎总是引用的方法来更改文件.xamlStartupStartupUri="MainWindow"Startup="App_Startup"


推荐阅读