Загрузчик в caliburn micro

Я не знаю, как я могу реализовать загрузчик в своем проекте.

В моем классе приложений я создаю новый поток, который запускает мое основное окно, не связанное с _ViewModel.

Я знаю, что есть сложный класс boostrapper, который он предлагает, но я не знаю, как его применить в моем проекте wpf.

Кто-нибудь может мне помочь?


person c_conl    schedule 19.10.2015    source источник


Ответы (1)


Я надеюсь, что это поможет вам:

Добавьте ResourceDictionary в свой App.xaml:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary>
          <local:AppBootstrapper x:Key="Bootstrapper"/>                  
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary>
</Application.Resources>

Добавьте новый класс AppBootstrapper с помощью Caliburn.Micro:

    public class AppBootstrapper : BootstrapperBase
     {
           public AppBootstrapper()
           {
            this.StartRuntime();
           }

      protected override void OnStartup(object sender,System.Windows.StartupEventArgs e)
      {
        this.DisplayRootViewFor(typeof(MainViewModel),null);
      }
    }

В "this.DisplayRootViewFor(typeof("")" добавьте имя вашей модели просмотра

person O.DO    schedule 19.10.2015
comment
Спасибо за вашу помощь, я пытаюсь интегрировать этот класс в свой проект + ключ x в моем файле app.xaml, но кажется, что AppBootstrapper никогда не вызывается. Нужно ли мне создать экземпляр этого класса из моего файла app.cs? - person c_conl; 20.10.2015
comment
нет, вам не нужно создавать экземпляр класса в вашем app.cs. Есть ли строка StartupUri= в вашем App.xaml? если да, удалите их. И правильно ли вы добавили local:-namespace?.. поэтому вместо StartupUri= должно быть xmlns:local:= с вашим пространством имен. - person O.DO; 20.10.2015
comment
все в порядке, у меня просто ошибка при сборке: элемент с таким же ключом уже добавлен в строку ‹local:AppBootstrapper x:Key=Bootstrapper/›... - person c_conl; 20.10.2015
comment
может быть, я знаю, почему... в классе AppBootstrapper измените строку this.StartRuntime(); to Initialize();.. тогда он должен работать - person O.DO; 20.10.2015
comment
Итак, теперь я изменил StartRuntime на Initilalize, он строится без ошибок, но мой AppBootstrapper по-прежнему не вызывается. - person c_conl; 20.10.2015
comment
Хорошо, может быть, вы могли бы опубликовать некоторые части своего кода из класса App.xaml и AppBootstrapper? - person O.DO; 20.10.2015
comment
Я меняю действие Build моего App.xaml на ApplicationDefinition, и теперь оно работает правильно. Спасибо - person c_conl; 21.10.2015