在WPF中使用自定义Application类时,StartupUri为null

时间:2016-05-24 11:57:56

标签: c# wpf xaml

我有一个非常基本的自定义App.xaml文件,其构建操作设置为Page,如下所示:

<root:TestApp x:Class="WpfApplication1.App"
             xmlns:root="clr-namespace:WpfApplication1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApplication1"
             StartupUri="MainWindow.xaml" />

应用程序的入口点(在App.xaml.cs中)如下所示:

 public partial class App : TestApp
    {
        [STAThread]
        public static void Main(string[] args)
        {
            var app = new App();
            app.InitializeComponent();
            app.Run();
        }
    }

app.Run()上设置断点显示StartupUri为空,这使我认为对app.InitializeComponent()的调用失败(特别是System.Windows.Application.LoadComponent(this, resourceLocater);

任何人都可以提供任何想法吗?没有抛出异常,它似乎没有加载我的xaml文件中的任何值。

1 个答案:

答案 0 :(得分:1)

当构建操作为InitializeComponent()而非Page时,App类的生成ApplicationDefinition方法会完全不同。

特别是它错过了这条线

this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);

而不是(或除了)调用InitializeComponent(),您可以直接设置StartupUri

public partial class App : TestApp
{
    [STAThread]
    public static void Main()
    {
        var app = new App();
        app.InitializeComponent(); // optional?
        app.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative);
        app.Run();
    }
}