visual-studio-2010 - 阻止混合向应用程序添加 startupURI?

标签 visual-studio-2010 startup blend

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

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

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

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

最佳答案

这是一个可怕的黑客攻击,但是,嘿,它有效。默认情况下,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);
}

将其添加到您的应用程序类中并像这样调用它:

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

关于visual-studio-2010 - 阻止混合向应用程序添加 startupURI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3779761/

相关文章:

vb.net - 在“If/End If”之间跳转的键盘快捷键

c++ - 使用 'using' 关键字获取指向类方法的指针

c# - Eclipse 类似于 Visual Studio 2010 C# 中的控制台

c# - 从 Windows 服务托管的 WCF 端点的问题

Canvas globalCompositeOperation 无法正常工作

silverlight - Silverlight模板选择器解决方案效果很好,但不能兼容

asp.net - 公司范围内新项目的标准母版页

php - 如何修复表单的移动 View ?

macos - 如何在 Mac OS 系统启动时启动 ActiveMq

wpf - EventTrigger 无法在 IsEnabledChanged 上触发