Получить HostControl из области в PRISM
Существует ли в любом случае, чтобы получить hostcontrol / parentcontrol из области в PRISM C# WPF. Я пытаюсь написать поведение пользовательского региона, которое изменяет hostcontrol, если в регионе нет представлений.
В классе RegionBehavior есть свойство HostControl, но оно равно alwasy null. Как мне его установить ? или как получить контроль над Хостом. Спасибо за совет!
[Export(typeof(CollapseRegionBehavior))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class CollapseRegionBehavior : RegionBehavior, IHostAwareRegionBehavior
{
public DependencyObject HostControl { get; set; }
protected override void OnAttach()
{
if (this.Region.ActiveViews.Count() == 0)
{
}
}
}
1 ответ:
Вы добавляете RegionBehavior вручную или регистрируете его в загрузчике в
ConfigureDefaultRegionBehaviors
?Кажется, что если вы добавляете поведение вручную, как это:
IRegion region = regionManager.Regions["MyRegion"]; region.Behaviors.Add("MyBehaviorKey", new MyBehavior());
Интерфейс
IHostAwareRegionBehavior
не имеет никакого эффекта. Если вы посмотрите на исходный код PRISM в RegionBehaviorCollection.КС (Призма.Декоп.Вы ясно увидите, что метод Add не делает ничего, связанного с интерфейсомIHostAwareRegionBehavior
.Однако в RegionAdapterBase.cs, интерфейс проверяется в
Я закончил тем, что зарегистрировал свой RegionBehavior в загрузчике и проверил имя региона, чтобы увидеть, есть ли работа, которую нужно выполнить. Не очень чисто, но работает.AttachDefaultBehaviors
.