Приложение WPF запускает проблемы

Мой мозг является разнообразной попыткой полностью понять Единицу прямо сейчас. Таким образом, я решил просто погрузиться в и начать добавлять его в ответвлении для наблюдения, где это берет меня. Удивительно достаточно (или возможно не), я застреваю, просто заставив мое проклятое Приложение загрузиться правильно.

Это походит на правильный способ сделать, что это должно переопределить OnStartup в App.cs. Я удалил свой StartupUri из App.xaml, таким образом, он не создает мой XAML GUI. Мой App.cs теперь выглядит примерно так:

public partial class App : Application
{
    private IUnityContainer container { get; set; }

    protected override void OnStartup(StartupEventArgs e)
    {
        container = new UnityContainer();
        GUI gui = new GUI();
        gui.Show();
    }

    protected override void OnExit(ExitEventArgs e)
    {
        container.Dispose();
        base.OnExit(e);
    }
}

Проблема состоит в том, что ничего не происходит, когда я запускаю приложение! Я поместил точку останова в container присвоение, и это никогда не поражается.

Что я пропускаю? App.xaml в настоящее время устанавливается на ApplicationDefinition, но я ожидал бы, что это будет работать, потому что некоторая демонстрационная Единица + WPF кодируют, я смотрю на (от Codeplex), делает ту же самую вещь, за исключением того, что это работает!

Я также запустил приложение единственным продвижением, и оно в конечном счете поражает первую строку в App.xaml. Когда я ступаю в эту строку, именно тогда приложение только начинает "работать", но я ничего не вижу (и моя точка останова не поражена). Если я делаю та же самая вещь в примере приложения, ступающем в App.xaml, исправляет меня в OnStartup, который является тем, что я ожидал бы происходить. Argh!

Я также только что создал новое приложение WPF с нуля, удалил StartupUri, переопределил OnStartup (), и это также работает. WTH?

Действительно ли это - Плохая Вещь просто поместить конструкцию Единицы в обработчик событий моего GUI Window_Loaded? Это должно действительно быть на уровне Приложения?

6
задан Dave 20 May 2010 в 16:27
поделиться

2 ответа

Дважды проверьте, что x:Class в App.xaml в том же пространстве имен/классе, что и в вашем App.xaml.cs. Легко скопировать/вставить из другого проекта и забыть изменить это.

Если по какой-то причине вам не удается решить эту проблему, удалите App.xaml и добавьте Main(), который выполняет new App().Run(). Если и это не сработает, значит, здесь что-то очень странное.

5
ответ дан 16 December 2019 в 21:35
поделиться

Кажется, ваша проблема вообще не связана с Unity ... Убедитесь, что:

  • объект запуска установлен на YourProject.App ( на странице свойств проекта)
  • действие сборки для App.xaml установлено на «ApplicationDefinition»

В противном случае я не вижу причины, по которой это не должно работать ...


Обновление: просто еще одно идея ... Попробуйте установить StartupUri обратно в App.xaml и вызовите базовую реализацию в OnStartup :

protected override void OnStartup(StartupEventArgs e)
{
    container = new UnityContainer();
    base.OnStartup(e);
}
2
ответ дан 16 December 2019 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: