2013-06-25 3 views
2

PRISM C# WPF의 영역에서 hostcontrol/parentcontrol을 가져올 수 있습니까? 지역에보기가 없으면 hostcontrol을 수정하는 사용자 정의 region 비헤이비어를 작성하려고합니다.PRISM의 지역에서 HostControl 가져 오기

RegionBehavior 클래스에는 HostControl 속성이 있지만 거의 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) 
     { 

     } 
    } 
} 

답변

2

은 수동으로 RegionBehavior를 추가하거나 ConfigureDefaultRegionBehaviors에서 부트 스트 래퍼에 등록합니까?

IRegion region = regionManager.Regions["MyRegion"]; 
region.Behaviors.Add("MyBehaviorKey", new MyBehavior()); 

IHostAwareRegionBehavior 인터페이스는 효과가 없습니다 :

당신이 다음과 같이 수동으로 동작을 추가하는 경우 것 같다. RegionBehaviorCollection.cs (Prism.Dektop.Regions)의 PRISM 소스 코드를 보면 Add 메서드가 IHostAwareRegionBehavior 인터페이스와 관련된 작업을 수행하지 않는다는 것을 분명히 알 수 있습니다.

그러나 RegionAdapterBase.cs에서 인터페이스는 AttachDefaultBehaviors으로 확인됩니다.

부트 스트 래퍼에 RegionBehavior를 등록하고 수행 할 작업이 있는지 확인하기 위해 영역 이름을 확인했습니다. 별로 깨끗하지는 않지만 작동합니다.

+0

예 알아 두었습니다. IHostAwareRegionBehavior는 해당 단계 이후에 부트 스트 래퍼에서 HostControl을 찾을 수없는 경우에만 작동하는 것으로 보입니다. 감사! – Tan