3

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

我使用启动例程并自己实例化主窗口。每隔一段时间,当我让它编译时,混合喜欢在 startupURI="MainWindow.xaml" 中折腾。偶尔我会看到一些类似“没有与此项目相关的启动场景。你想混合来修复它吗?”这样的消息。或类似的规定。我单击取消/否,但它仍然在我的代码中抛出一个 gremlin。内部混合有一些检查这个属性的机制,否则它不会通过对话框向我抱怨。那么我该如何告诉它“不,谢谢混合,没有那个我很好?”,大声笑。

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

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

4

1 回答 1

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.
}
于 2010-12-31T21:06:21.737 回答