#c# #wpf #prism-4
#c# #wpf #prism-4
Вопрос:
Я совершенно новичок в Prism (составной Wpf). Я хочу создать модуль обмена сообщениями для своего приложения: невидимую панель в верхней части главного окна, которая появляется при вызове ShowMessage(string message)
(и исчезает, например, через 5 секунд).
Что я сделал:
- Создать проект инфраструктуры (содержит только один интерфейс
IUIMessagesService
) -
Создать проект модуля:
-
Проект содержит пользовательский элемент управления — это панель для сообщения (просмотра)
-
Проект содержит
UIMessagesService
класс, который реализуетIUIMessagesService
-
В классе module я сделал так:
public UIMessagesModule(IRegionManager regionManager, IUnityContainer container)
{
_regionManager = regionManager;
_container = container;
} -
и
public void Initialize()
{
_regionManager.RegisterViewWithRegion("UIMessagesRegion", typeof(UIMessagesView));
_container.RegisterType<IUIMessagesService, UIMessagesService>(new ContainerControlledLifetimeManager());
}
- Создайте проект оболочки (загрузчик, представление оболочки с областью и т.д.)
Вопросы:
-
Как я могу изменить свойства моего представления в классе
UIMessagesService
(в данном случаеRenderTrasform
для отображения панели)? Может быть, мне нужно определить эти свойства в модели представления? Как изменить свойства модели представления? -
Как выполнить методы модуля
ShowMessages
из приложения?
Ответ №1:
Для вашего первого вопроса вы можете использовать агрегацию событий,
для второго:
вы можете использовать ServiceLocator или container для разрешения вашего типа
Комментарии:
1. Нет, спасибо. Я это сделал. Но бывают моменты, когда я не совсем уверен, что делаю это правильно. В PRISM нет строгих правил.
Ответ №2:
Не уверен, что это именно то, что вы хотели. Но вы можете использовать расширяемый wpf toolkit busyindicator. Это может отображаться поверх вашего представления на глянцевом экране, и вы можете управлять этим, просто установив или привязав свойство зависимости IsBusy.
взгляните на пример здесь