C#/Prism

[C# - Prism] 프리즘 예제 17- BasicRegionNavigation

반나무 2023. 9. 3. 12:36

안녕하세요, 반나무입니다.

이번 예제는 BasicRegionNavigation예제입니다.

간단히 풀면 어떤 Region에 원하는 View를 띄워주는 예제입니다.

 

프로그램 구조

프로그램 구조는 다음과 같습니다.

  • BasicRegionNavigation : Shell
  • ModuleA : View를 Register만 하는 Module

 

MainWindow.xaml

ViewA와 ViewB라는 string을 CommandParameter로 넘겨줍니다.

 

 <DockPanel LastChildFill="True">
    <StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Margin="5" >
        <Button Command="{Binding NavigateCommand}" CommandParameter="ViewA" Margin="5">Navigate to View A</Button>
        <Button Command="{Binding NavigateCommand}" CommandParameter="ViewB" Margin="5">Navigate to View B</Button>
    </StackPanel>
    <ContentControl prism:RegionManager.RegionName="ContentRegion" Margin="5"  />
</DockPanel>

 

MainWindowViewModel.cs

MainWindow에서 전달받은 파라미터를 통해 ViewModel에서 ContentRegion을 Navigate합니다.

private void Navigate(string navigatePath)
{
    if (navigatePath != null)
        _regionManager.RequestNavigate("ContentRegion", navigatePath);
}

 

ModuleAModule.cs

ContainerRegistry에 Navigation으로 등록만합니다.

 public class ModuleAModule : IModule
{
    public void OnInitialized(IContainerProvider containerProvider)
    {

    }

    public void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.RegisterForNavigation<ViewA>();
        containerRegistry.RegisterForNavigation<ViewB>();
    }
}

ViewA,B 버튼 클릭시 변화

 

이번 예제를 보면 Module에서 딱히 ViewA,B를 특정한 부분에 등록한 부분은 없습니다.

containerRegistry.RegisterForNavigation에서 View를 등록만 해주면 다른 프로젝트에서도 해당 컨테이너를 사용하기 때문에 region을 Navigate하는것을 요청할 수 있다는것이 보여집니다.

 

반응형