WPF PRISM - зарегистрировать представление с регионом без разрешения экземпляра - PullRequest
2 голосов
/ 20 декабря 2010

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

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

Примечание. Несколько представлений регистрируются в одном и том же регионе (например,сценарий стиля навигации по меню).

1 Ответ

4 голосов
/ 20 декабря 2010

Есть два способа сделать это. У одного документа больше, чем у другого.

  1. Примите решение о создании экземпляра самостоятельно, используя View Injection, а не позволяйте Region создавать экземпляр вашего представления (называемого View Discovery). Это довольно просто, но, не зная вашего решения, было бы трудно точно знать, что вы ищете.

  2. Используйте интерфейс IActiveAware. В этом сценарии вы фактически разрешаете создание экземпляра представления, но ваше представление будет ожидать уведомления от диспетчера регионов, что представление активно. Вот взгляд на интерфейс IActiveAware (он довольно понятен): http://msdn.microsoft.com/en-us/library/microsoft.practices.prism.iactiveaware_members(v=pandp.38).aspx

И небольшой пример кода:

public class MyView : IActiveAware
{
     private bool _isActive = false;
     public bool IsActive
     {
          get { return _isActive; }
          set 
          { 
               _isActive = value;
               if(value)
               {
                     //Good idea to thread this if you can
                     DoSomethingExpensive();
               }
          }

     }

}
...