이렇게하는 데는 몇 가지 다른 방법이 있습니다. 같음 컨트롤 (동일한 인스턴스)이 필요한지 또는 각 페이지에 추가 된 머리글/바닥 글 컨트롤이고 삽입 한 내용을 기반으로 변경되는 경우에만 중요합니다.
첫 번째로, 이것이 CommandBar
에 통합 될 수있는 것이라면, 내가 먼저 시도해 보는 것이 좋습니다. 그러면 각 CommandBar
에 대해 StaticResource
을 만들고 머리글과 바닥 글에 맞게 스타일을 지정할 수 있습니다. 각 페이지를 선언 할 때, 루트 선언에서 바로 설정 :
Page.TopAppBar="{StaticResource MyHeader}"
Page.BottomAppBar="{StaticResource MyFooter}"
당신은 그들에게 Sticky
을하고 방금 줄임표 (...
)와 축소 된 버전을 가지고 포함, 선호 어떤 방식으로 스타일을 지정할 수 있습니다에 그것을 숨기거나 보여라. 각자의 ViewModel 안에 모든 데이터를 저장할 수 있으며 컨트롤의 DataContext를 VM에 직접 바인딩하여 각 인스턴스가 동일한 데이터에서 가져 오도록 할 수 있습니다.
CommandBar
유형에 통합 할 수있는 것이 아니라면 자신 만의 Page
하위 클래스를 만드는 것이 좋습니다. Template
은 해당 을 Header
및 Footer
사용자 지정 항목에 포장하며 Grid
패널에 표시됩니다. 이렇게하면 매번 새로운 사본이 생성되므로 ViewModel에 바인딩해야합니다.
최종 옵션은 하위 클래스 방법과 비슷하게 콘텐츠를 배치하는 머리글과 바닥 글을 가진 부모 Page
을 만드는 것입니다. 이번에는 Frame
을 포장하십시오. 그런 다음 Frame
에 Frame.Navigate
을 호출하면 머리글/바닥 글 컨트롤이 다시 생성되지 않고 그 사이의 콘텐츠 만 다시 만들어집니다.
대부분의 Windows 8/8.1 앱 샘플에서 이와 비슷한 내용을 볼 수 있습니다. 그들은 컨텐츠 프레임을 작성한 다음 샘플의 각 페이지를 탐색합니다 (일반적으로 탐색 ListBox
의 선택 사항에 따라 다름).
조금 더 자세한 정보를 추가하면 약간의 답을 시도하고 좀 더 구체적으로 설명 할 수 있지만 설명 된 내용을 달성하기 위해 볼 수있는 일반적인 방법입니다.
업데이트 : 당신이 말한 한 내용을 바탕으로
가, 나에게 그것은 Page
가 Frame
포장, 세 번째 옵션으로 이동하는 것입니다 할 수있는 쉬운 일처럼 보인다. 나는 아래쪽 막대가 탐색에 영향을주기가 쉽기 때문에 머리말이나 꼬리말이 페이지 전환의 영향을 받기를 원하지 않는 것처럼 들린다.당신이 공식 ListView
sample을 선택하면
, 당신은 자신의 메인 페이지는 다음과 같이 뭔가를 선언 알게 될 것이다 :
<Page
...>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<!-- Navigation and other stuff -->
<Frame Grid.Column="1" x:Name="ScenarioFrame" Margin="30,50,30,0" />
</Grid>
</Page>
이 기본적인 메인 페이지 선언이다. 그런 다음 헤더에 하나, 내용에 하나, 바닥 글에 하나씩 세 개의 Rows
을 선언 할 수 있습니다. 꼬리말이 튀어 나오게하고 싶다면 설명해 놓은 꼬리말을 CommandBar
에 넣고이 페이지에 포함시킬 수 있습니다. 탐색이 필요할 때마다 코드 숨김에서 ScenarioFrame.Navigate
으로 전화하십시오. 이제 보통처럼 Page
을 만들 수 있으며 다른 앱처럼 Navigate
을 만들 수 있습니다.
'유니버설'이기도하므로 Universal
앱에 포함시킬 수 있어야합니다. 바닥 글이 화면 크기에 맞게 조정되어 있어야합니다 (이미 수행 한 작업). 이 작업을 시도 할 경우 기본 페이지의 탐색 코드가 가능한 일반 사항인지 확인하고 창 및 설정과 같은 대부분의 '특수 탐색'이 각 플랫폼 별 페이지 또는 적어도 메시징을 통해 처리되는지 확인하십시오 MvvmLight에서 제공하는 것과 같은) 및 NavigationHelper
클래스입니다.
희망이 있다면 도움이되고 행복하게 코딩 할 수 있습니다.
조금 더 많은 정보를 추가했습니다. –
추가 정보를 반영하도록 업데이트했습니다. –