2009-08-13 3 views
0

나는 이것을 사용하는 것을 좋아하지만, 내 삶에 아이템을 바인딩하는 방법을 생각할 수 없다.프리즘 및 애니메이션 TabControl

나는 간단한 예를보고 싶다,

같은 Shell.xaml

<Controls:AnimatedTabControl 
    x:Name="TestTab" 
    SelectedIndex="0" 
    VerticalAlignment="Stretch" 
    cal:RegionManager.RegionName="{x:Static inf:RegionNames.TestRegion}" 
    Grid.Row="1" 
/> 

- 여러 개의 탭을 가지고 필요한 것은 코드

using Microsoft.Practices.Composite.Modularity; 
using Microsoft.Practices.Composite.Regions; 

namespace HelloWorldModule 
{ 
    public class HelloWorldModule : IModule 
    { 
     private readonly IRegionManager regionManager; 
     public HelloWorldModule(IRegionManager regionManager) 
     { 
      this.regionManager = regionManager; 
     } 

     public void Initialize() 
     { 
     regionManager.RegisterViewWithRegion(
      RegionNames.SecondaryRegion, typeof(Views.HelloWorldView)); 
     regionManager.RegisterViewWithRegion(
      RegionNames.TestRegion, typeof(Views.TestTab)); 
     } 
    } 
} 

변화에 따라 움직이는 애니메이션은 TestRegion입니다. AnimatedTabControl 또는 일반 탭 컨트롤에 바인딩하는 방법을 알아낼 수 없습니다 ...

답변

0

내가보기에 문제는 View Injection을 실제로 사용하려고 할 때 View Discovery를 사용하고 있다는 것입니다. .

View Discovery를 사용하면보기를 영역으로 등록하고 영역이 표시되면 각보기가 동적으로로드됩니다. 내 생각 엔 지역을 볼 수있게 한 후에 지역을 가진 뷰를 등록하는 것입니다. 즉, Region이 이미 표시되어 있으므로보기가 인스턴스화되지 않습니다.

뷰 인젝션은 이미 존재하는 영역에 뷰를 동적으로 삽입합니다. 나는 이것이 당신이 원하는 것을 생각합니다. 쉘은 괜찮습니다하지만 당신은 모듈 초기화() 호출에 다음을 추가해야합니다 :

Views.HelloWorldView hello= new Views.HelloWorldView(); 
regionmanager.Regions[RegionNames.TestRegion].Add(hello); 

이 트릭을 할해야합니다.

NB : 당신은/보여 그래서 같은 IRegion의 활성화/비활성화 방법 호출하여 지역의 전망을 숨길 수 :

regionmanager.Regions[RegionNames.TestRegion].Activate(hello);