2010-09-23 3 views
3

Есть ли какой-то трюк, который, как известно, сообщает blend, чтобы не пытаться установить startupURI в моем app.xaml? Я искал Google, но ничего не видел, поэтому решил, что спрошу здесь.предотвратить смешение от добавления startupURI к приложению?

Я использую рутину запуска и сам экземпляр mainwindow. Каждые раз в то время смесь нравится бросать в startupURI = «MainWindow.xaml», когда я позволяю ему скомпилировать. Иногда я вижу некоторое сообщение в строках «Нет сцены запуска, связанной с этим проектом. Не хотите ли вы, чтобы bluff blah blah исправить это?» Или что-то вдоль этих линий. Я нажимаю cancel/no, но он все еще бросает gremlin в мой код. Внутренний для смешивания есть некоторый механизм для проверки этого свойства или он не будет жаловаться через диалоговое окно для меня. Итак, как я могу просто сказать «нет, спасибо, смело, я без этого прав?», Lol.

Его довольно раздражает. Я открываю смесь, чтобы сделать что-то простое, например, с помощью набора цветов и использовать его для компиляции, потому что VS2010 не открыт. Мой результат - две основные окна. Но он не делает это каждый раз, поэтому это не повторяющееся поведение. Компилятор просто действует произвольно.

Редактировать: Я использую смесь 4, но я видел, как это произошло, когда я использовал смесь 3.

+0

я второй, что это явно раздражает, когда вам нужно создать экземпляр окна из кода statup !! –

+0

Я надеюсь, что кто-то из команды Blend часто посещает этот форум и может включить исправление для этого или, по крайней мере, флажок в следующей версии Blend. Это происходит со мной не реже 3 раз в неделю. Я стараюсь не строить свой проект с помощью blend, но много раз я должен делать это, чтобы мои визуальные эффекты обновлялись на монтажной панели. Когда вы его создаете, он принимает активный .xaml-файл (окно, страница, usercontrol) и устанавливает его как запуск. – TWood

ответ

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); 
} 

Добавьте это к классу приложений и назвать его так:

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