помешать смеси добавить startupURI в приложение? - PullRequest
3 голосов
/ 23 сентября 2010

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

Я использую процедуру запуска и сам создаю экземпляр главного окна. Каждое время от времени смесь любит вставлять в startupURI = "MainWindow.xaml", когда я позволяю его компилировать. Иногда я вижу какое-то сообщение в виде строк: «С этим проектом не связано ни одной сцены запуска. Или что-то вдоль этих линий. Я нажимаю «Отмена / Нет», но в моем коде по-прежнему выбрасывается гремлин. Для внутреннего смешивания есть некоторый механизм проверки этого свойства, иначе он не будет жаловаться через диалоговое окно для меня. Так как же мне просто сказать: «Нет, спасибо, смесь, мне хорошо без этого?», Смеется.

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

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

1 Ответ

0 голосов
/ 01 января 2011

Это ужасный, ужасный взлом, но эй, это работает. По умолчанию 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.
}
...