c# - 将 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 文件,它将只是一个普通窗口,而不是我的派生类型!?
解决方案
代表汉斯的评论回答,除非他也选择回答:
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"
Startup="App_Startup"
推荐阅读
- php - php中的正则表达式:多种可能性
- javascript - Odoo V12 JavaScript 框架
- time - 如何在工作流中将 Oozie 的协调器时间传递给 SLA 参数nominal_time?
- typescript - NUXT 在项目位置之外使用共享样式和脚本
- java - 如果我使用 Azure APIM,我应该如何在我的 REST API 中添加授权?
- oop - 如果我创建了一个 A 类的对象,但也存在同名的 A 的重复类,会发生什么?
- html - 在边缘浏览器数据列表下拉字体不同,但在 chrome 中它类似于网站字体
- java - 如何在spark(java)中遍历数据集的所有列
- mongodb - 为什么当条目已经排序时,mongo 不会用 SORT_MERGE 阶段替换 OR 阶段
- laravel - Vue js如何从一个函数在同一页面返回多个v-if条件