Прошло много времени с тех пор, как я использовал PRISM, но ниже приведен пример, который можно использовать для реализации пользовательского IRegion, который оборачивает элемент перед добавлением его в коллекцию.
public class RegionWrapper : Region
{
public override Microsoft.Practices.Composite.Regions.IRegionManager Add(object view, string viewName, bool createRegionManagerScope)
{
var myWrapper = new Wrapper();
myWrapper.Content = view;
return base.Add(myWrapper, viewName, createRegionManagerScope);
}
}
Для регистрацииЭтот элемент вам нужен для создания фабрики регионов, которую в PRISM они называют адаптером
public class RegionWrapperAdapter : RegionAdapterBase<IRegionAdapter>
{
protected override Microsoft.Practices.Composite.Regions.IRegion CreateRegion()
{
return new RegionWrapper();
}
}
. Затем на вашей Bootstrap просто зарегистрируйте свой адаптер
protected override RegionAdapterMappings ConfigureRegionAdapterMappings()
{
var regionAdapterMappings = base.ConfigureRegionAdapterMappings();
regionAdapterMappings.RegisterMapping(typeof(ItemsControl), Container.Resolve<RegionWrapperAdapter>());
return regionAdapterMappings;
}
Конечно, другая часть слевареализовать элемент управления «Обертка», чтобы вы могли создать этот класс и добавить содержимое.Это может быть просто ContentControl с определенным стилем, похожим на тот, что у вас есть в этом примере, или добавить что-нибудь более причудливое.
Этот код основан на старой версии PRISM, поэтому в последнее время все могло измениться.
Надеюсь, это поможет
Мигель