WPF-приложение, использующее Prism.
Я использую многофазный инициализатор модуля, и при инициализации модуля я хотел бы, чтобы модуль самостоятельно проверял виды и регистрировал любые области, определенные в.
Я использую что-то похожее на код ниже для самостоятельной проверки классов модели представления и регистрации других вещей, но я не знаю, как отразить в представлении.
protected void SelfInspectRegions()
{
var assm = Assembly.GetAssembly(this.GetType()).GetTypes();
foreach (var type in assm)
{
if(type.IsSubclassOf(typeof(UserControl)))
{
var a = type;
}
}
}
Пример на основе табуляциирегион (определенный в View / UserControl) Я хотел бы самостоятельно зарегистрироваться ниже;
<controls:ChTabControlModelAware x:Name="OrderProcessingDocumentDetailRegion"
cal:RegionManager.RegionManager="{Binding RegionManager, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type shells:FormShell}}}"
cal:RegionManager.RegionName="Order Processing:DocumentDetailRegion"
cal:RegionManager.RegionContext="{Binding DataContext, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="1" VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
<bindings:EventToCommandBehavior.EventBindings>
<bindings:EventBinding Command="{Binding SelectedDetailTabChangedCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=controls:TabControl}, Path= SelectedItem.DataContext.HeaderInfo}"
EventName="SelectionChanged" RaiseOnHandledEvents="True"
PassEventArgsToCommand="True" />
</bindings:EventToCommandBehavior.EventBindings>
</controls:ChTabControlModelAware>
В основном я хотел бы извлечь RegionName, определенное в строке;
cal:RegionManager.RegionName="Order Processing:DocumentDetailRegion"
IЯ не уверен, как это сделать, и любая помощь будет с благодарностью получена.
Большое спасибо
Ланс
Обновление 17/10/2018: чего я пытаюсь достичь.
Я пишу инфраструктуру приложений WPF с примерно 30 модулями (и расширяющимися), которые все подписываются и внедряют службы.
Все мои регионы объявлены в представлении, и есть лгрузы и грузы из них.В связи с развитием требований в моей структуре теперь необходимо, чтобы модули предварительно регистрировали свои регионы на этапе инициализации модуля.Одна из причин заключается в том, что некоторые службы ориентированы на конкретные регионы и имеют рабочие параметры, которые являются уникальными для каждого отдельного хоста.В настоящее время хост-модули отвечают за настройки, а это означает, что в случае внесения изменений в рабочие настройки службы требуется много вырезать и вставлять между модулями и проектами.По предварительной регистрации хостов, при инициализации модуля сервисный модуль знает, какие модули используют его сервисы, и может внедрить класс настроек в viewModel настроек хост-модулей для взаимодействия с пользователем.Изменения в рабочих настройках должны быть изменены только в сервисном модуле, а не во всех различных хост-модулях, которые его используют.
Я искал простой способ вырезать имена из многочисленных сборок модулей безнеобходимость явно объявить их или украсить модель представления декларативным атрибутом.