WPF 버튼을 통한 화면전환

안녕하세요.
wpf 버튼을 통한 usercontrol 화면 전환을 구현하고 싶습니다. 버튼 1,2,3을 누를때마다 각 버튼에 해당하는 화면전환을 하고 싶습니다.

좀 찾아보니까 화면전환을 frame아니면 usercontrol을 이용하는거 같던데 유저컨트롤을 사용하려면 어떤식으로 할 수 있나요?
frame을 이용하려면 page를 사용하는것이 맞나요? 아니면 usercontrol도 frame으로 화면전환이 가능한가요?
ㅁㅁㅁ

3개의 좋아요

NavigationService 를 구현하여 적용해보세요~

8개의 좋아요

여러가지 전략이 있습니다.

  1. Frame 사용
    Frame의 대상은 굳이 Page일 필요가 없습니다. 그러니까 UserControl도 됩니다.

  2. Visibility 속성 이용
    단지 보여져야 할 화면을 전환할 경우 간단히 Visibility 속성으로 보이고 감추고 해서 구현할 수 있습니다.

  3. TabControl 사용
    헤더를 감추고 원하는 탭으로 이동하면 원하시는 동작을 만들 수 있습니다.

5개의 좋아요

감사합니다!!

2개의 좋아요

감사합니다!! 확인해보겠습니다

2개의 좋아요

@dimohy 2번의 경우

this.Visibility = System.Windows.Visibility.Collapsed;

이런식으로 구현하는거같은데 저의 경우에 위와같은 방법을 사용하면 창 자체가 사라지는거 같은데 어떤식으로 구현해야할까요?

wpf - How to navigate to another user control by clicking a button in a usecontrol - Stack Overflow

2개의 좋아요

해당 컨트롤들을 모두 올려놓은 후 버튼 클릭 시 해당하는 컨트롤만 Visible로 놓고 나머지는 Collapsed나 Hidden으로 두시면 됩니다. MVVM 패턴을 적용하지 않는다면 코드 비하인드에서 Click 이벤트로 처리하시면 되고, MVVM 패턴 하에서는 Command를 통해 처리하시면 됩니다.

MVVM 패턴 하에서는 컨트롤의 Visibility 프로퍼티에 ViewModel의 프로퍼티 바인딩 후 컨버터를 통해 제어하시면 되는데, 보통 Visibility는 bool 타입의 프로퍼티를 바인딩한 후 BoolToVisibility 컨버터를 구현해 사용하는 경우가 많습니다.

4개의 좋아요

감사합니다!!

3개의 좋아요

제가 일하는 중이였어서… 답변은 @루나시아 님이 대신 해주셨네요!

3개의 좋아요
  1. UI Resources에 DataTemplate을 ViewModel별로 View를 정의하고, ContentControl의 Content에 ViewModel을 바인딩걸기. 그리고 버튼누를때 바인딩걸었던 ViewModel를 바꾸면 될듯요.
  2. ContentControl의 Content에 View를 바인딩걸기. 그리고 버튼누를때 View를 바꾸면 될듯요…ㅎㅎ
2개의 좋아요