防止混合将startupURI添加到应用程序?

时间:2010-09-23 15:08:10

标签: visual-studio-2010 startup blend

是否有一些技巧可以告诉blend停止尝试在我的app.xaml中设置startupURI?我用谷歌搜索,但没有看到任何东西,所以我想我会在这里问。

我使用启动例程并自己实例化mainwindow。当我让它编译时,每一次混合都喜欢在startupURI =“MainWindow.xaml”中抛出。偶尔我会看到一些消息:“没有与这个项目相关的启动场景。你想混合到等等吗?”或类似的规定。我点击取消/否,它仍然在我的代码中扔了一个gremlin。内部混合有一些机制来检查这个属性,或者它不会通过对话框向我抱怨。那么我怎么才能告诉它“没有感谢混合,没有那个我很好?”,哈哈。

非常讨厌。我打开混合做一些简单的事情,比如使用颜色选择器并使用它来编译,因为VS2010没有打开。我的结果是两个主要窗口。但它并不是每次都这样做,所以它不是一种可重复的行为。编译器只是随机出现。

编辑:我正在使用混合4但是当我使用混合3时我也看到了这种情况。

1 个答案:

答案 0 :(得分:0)

这是一个可怕的,可怕的黑客,但嘿,它的确有效。默认情况下,StartupUri为null,但您无法使用该属性将其设置为null,因此如果您希望生活在边缘,则可以绕过该属性。

// Dangit blend! Stop inserting a stupid StartupUri    
private void FixStartupUri()
{
    var type = typeof(Application);
    var startupUri = type.GetField("_startupUri", BindingFlags.Public
        | BindingFlags.NonPublic
        | BindingFlags.Instance);
    startupUri.SetValue(this, null);
}

将它添加到您的Application类并像这样调用它:

protected override void OnStartup(StartupEventArgs e)
{
    FixStartupUri();
    base.OnStartup(e);
    // Do the rest of your startup stuff.
}