2013-08-15 2 views
1

WPF에서 MVVM 응용 프로그램을 개발 중입니다. 내 프로젝트에는 메인 윈도우와 많은 사용자 컨트롤이 있습니다. 사용자 정의 컨트롤을 호스트하는 데 주 윈도우를 사용해야합니다. 슬라이드 효과가있는 다른 사용자 컨트롤 사이를 탐색 할 수있는 시스템을 설정하고 싶습니다. 기본 창에 탐색 버튼이 없습니다. 모든 탐색 버튼은 다른 사용자 컨트롤에 있습니다. 예를 들어 사용자 컨트롤 A에 버튼 (버튼 A)이 있습니다.이 버튼을 클릭하면 사용자 컨트롤 A에서 사용자 컨트롤 B (슬라이드 효과 사용)로 전환하고 싶습니다. 사용자 정의 컨트롤 B에는 내비게이션 버튼도 있고 버튼 B도 있습니다. 버튼 B를 클릭하면 사용자 정의 컨트롤 "X"("X"는 모든 사용자 정의 컨트롤이 될 수 있음)로 전환하고 싶습니다. 등 ... 나는 기능처럼이있을 것입니다있는 "네비게이션 서비스"의 일종으로 개발하고 싶습니다 : 나는 그것을 알고MVVM의 사용자 컨트롤로 슬라이드 탐색

NavigationService.SlideTo(new UserControlX(), Directions.LeftToRight); 

이 어려울 것을하지만 난 어떤 아이디어 나 제안의를하고 싶습니다 어떤 방법으로 MVVM 모델을 유지하면서 작업해야합니다.

답변

1

당신이 사용할 수있는 프리즘 지역 : Prism MSDN link

  1. 이 버튼의 클릭 cammand에 다른 사용자 컨트롤로 이동 메인 창

    <ContentControl prism:RegionManager.RegionName="MainRegion" x:Name="MainRegion" /> 
    
  2. 사용 RegionManager에서 영역을 만들기

    var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>(); 
    regionManager.RequestNavigate("MainRegion", "UserControlName");//good practice to use fully qualified usercontrol name like "namespace.UserControlName" 
    
  3. 슬라이딩 효과 시도 sim 사용자 정의 컨트롤이 같은 ILAR (심지어 다른 애니메이션 스타일을 시도 할 수 있습니다, 이것은 단지 샘플입니다) :

    <UserControl.Triggers> 
        <EventTrigger RoutedEvent="Control.Loaded"> 
         <BeginStoryboard> 
          <Storyboard > 
           <ThicknessAnimation Duration="0:0:.8" Storyboard.TargetProperty="Margin" From="1920,0,0,0" To="0" AccelerationRatio=".1"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
    </UserControl.Triggers> 
    

는 희망이 도움이 ...

+0

작동 표시되지 않습니다. net4 (또는 종속성이없는 경우 최소한 하나). –

관련 문제