프리즘이 App.xaml.cs 에서 각 페이지 등록해주고 NavigationService 생성해준 다음, 이걸 다음 페이지한테 넘겨주는 방식으로
넘어가는 형식인거 같은데
MainView에서 HeaderView를 포함하고 있는 상태다보니 NavigaitonService를 MainView에서 소유하고 있고
정작 다음 페이지로 넘어가기 위해서는 HeaderView가 Service를 가지고 있어야하는데 줄 수가 없어..;;
현재는 화면을 띄우려고 어거지로
await Applicatrion.Current.MainPage.Navigation.PushModalAsync(new MenuPage()); 이런 식으로 해놨는데
HeaderView에서 MenuPage의 생성자에게 NavigationService를 넘겨주는 방식으로 화면을 넘어가려면 어떻게 해야 함?
20개의 댓글
무분별한 사용은 차단될 수 있습니다.
집에가게해줘
아니 ㅅㅂ 글 쓰다보니 승질나네
자마린 프로젝트에 자마린 할 줄 아는 사람이 한 명도 없네... 후우.........
ery
그거 명줄 끊긴지 오래인지 왜 그걸 쓰지?
플랫폼의 제약이 밖신가?
설마 신규 프로젝트인데 자마린 쓰는건 아니지?
좋소사장
아직 간간히 있음... 가끔옴 ㅋㅋㅋ
ery
;; 힘내라
좋소사장
멀하고 싶은거임? 모달 뛰우려고 하는거여?
좋소사장
WPF 프리즘에서 네비게이션은 웹에서 라우팅 하는거랑 똑같음
좋소사장
서비스 인터페이스 모듈 따로 만들어서 전역으로 올리고 네비게이션은 App 에 등록둬어있이야함
좋소사장
그리고 자마린하고 WPF는 다른 플랫폼인데 보니까 WPF만 쓰는거 같은데 맞지?
좋소사장
Xamrin 하고 Xaml 확장자하고 다른거임 외국애들은 재믈이라고 읽음
좋소사장
일단 Brian Lagunas github 들어가면 Infragistics UI component 이용해서 아웃룩 클론하는 강좌하나 있거든? 그거 보면서 하셈
좋소사장
메인뷰 인터페이스로 만들고 다른곳에서 인터페이스 상속해서 쓸수있게하면 문제해결가능함 디자인 패턴 찾아보셈
좋소사장
모달을 뛰우려고 하는거면 조금 다름 모달도 App에 서비스 등록되어있으면 됨
좋소사장
하튼 뭐 잘 찾아보시고 한쪽에있는 View에서 사용된 객체를 다른 View에서 쓰려면 인터페이스 상속밖에 없음. 인터페이스를 전역으로 만들고 그걸 App에 등록해서 사용함. 하나의 큰 shared memory 객체를 만든다고 생각하면 됨. 당연히 lock 걸고 copy on write 지켜서 쓰고.
집에가게해줘
일단 자마린에서 prism을 사용하고 있음.
난.. C#에 자마린은 이게 처음이고 시작한지 얼마 안되가지고 솔직히 아는게 없음..; 심지어 모바일은 더더욱 모름.
일단 내가 파악하기로는 글에 써놓은것과 같이 예를들어 "NextPage"를 미리 등록하고
NavigationService 객체를 생성한 다음, 다음 페이지한테 navigationService.NavigateAsync("NextPage")를 써서
navigationService 객체를 넘겨주는거 같음..(확실치 않음. 생성자에 NavigationService navi를 매개변수로 받음)
결국 내가 원하는건... 다른 페이지들은 다 navigationService.NavigateAsync("~"); 를 써서 다음 페이지로 넘어가는데
그러기 위해서는 navigationService 객체를 가지고 있을 필요가 있음.
하지만 내가 사용하고 있는 곳은 navigationService 객체를 가지고 있지 않기 때문에
다른 방법으로 navigationService 객체를 가지고 오거나, 아니면 다른 방법으로 화면을 띄워 줄 필요가 있어보임.
사실 팝업으로 화면을 띄우라고 했는데 팝업으로 하니까
키보드창 나오면 화면 아작 나길레 그냥 일반 ContentPage로 변경하고 작업중
좋소사장
인터페이스는 뷰모델 생성자에 파라미터로 가져올수있음. 근데 나는 그게 귀찮아서 네비게이션이랑 기본 서비스는 메인뷰모델 전에 상속뷰모델을 하나 만늘어서 거기저 받아서 씀. 서비스 많아지면 파싸드 패턴으로 품. 화면 뜨는건 모달인데... 모달은 쪼끔 까다로울수 있음. 모달사용전에 모달인터페이슷 상속받는 뷰모델 하나 필요함
좋소사장
그리고 자마린 프리즘은 모르겠는데 WPF 프리즘은 모달이 페이지가 아니라 윈도우였음.
좋소사장
NavigationService는 App 에서 등록해서 쓰고 viewmodel에서 InavigationService를 상속받아서 쓰면됨. 별로 어려울거 없어!
좋소사장
내가 지금 자려구 누워서 낼 회사가서 시간나면 코드올려드림
집에가게해줘
고맙다! ㅜㅜ... 일단 위에 썻다 싶이
MainView안에 HeaderView(ContentView)를 포함시킨 형태이다 보니 INavigationService를 상속받은건 MainView이고
정작 다음 페이지로 넘어가는 기능은 HeaderView에 있어서 어떻게 페이지를 넘길지 고민하고 있었어 ㅜㅜ
'HeaderView -> MainView -> 다음페이지' 이런 식으로 하는건 ㅄ 짓인거 같고 ㅋㅋㅋ
좋소사장
NavigationViewModel 이라는걸 하나 만들고 Inavigation 상속해주고 여기서 Header view와 MainView에서 사용하는 애들을 넣어줌. 그리고 HeaderViewModel 하고MainViewModel은 NavigationViewModel을 상속받으면 됨.
음 느낌이 View객체를 다른 View에서 들고있는 느낌인데 이러면 Event 이용해서 와따리갔다리하는게 좋음