2014-05-12 4 views
0

첫 번째 창을 앱으로 저장하고 일부 컨트롤을 모든 화면의 상단과 하단에 표시해야합니다. WPF dev을 만들었을 때 usercontrol을 만들어서 모든 페이지에 추가했습니다. Windows에서 앱을 저장하는 방법은 무엇입니까?모든 화면에 동일한 컨트롤을 추가하는 방법은 무엇입니까?

특히 헤더에는 회사 로고와 외부 리소스 (유휴 -> 실행 중 등)에 따라 변경되는 상태 아이콘이 있습니다. 바닥 글은 탐색이 다소 선형 방식으로 이루어지는 곳입니다. 또한 바닥 글은 업데이트를 계속하는 날짜와 현재 시간을 표시합니다. 바닥 글에서 선택한 내용에 따라 중간의 내용이 변경됩니다.

답변

1

이렇게하는 데는 몇 가지 다른 방법이 있습니다. 같음 컨트롤 (동일한 인스턴스)이 필요한지 또는 각 페이지에 추가 된 머리글/바닥 글 컨트롤이고 삽입 한 내용을 기반으로 변경되는 경우에만 중요합니다.

첫 번째로, 이것이 CommandBar에 통합 될 수있는 것이라면, 내가 먼저 시도해 보는 것이 좋습니다. 그러면 각 CommandBar에 대해 StaticResource을 만들고 머리글과 바닥 글에 맞게 스타일을 지정할 수 있습니다. 각 페이지를 선언 할 때, 루트 선언에서 바로 설정 :

Page.TopAppBar="{StaticResource MyHeader}" 
Page.BottomAppBar="{StaticResource MyFooter}" 

당신은 그들에게 Sticky을하고 방금 줄임표 (...)와 축소 된 버전을 가지고 포함, 선호 어떤 방식으로 스타일을 지정할 수 있습니다에 그것을 숨기거나 보여라. 각자의 ViewModel 안에 모든 데이터를 저장할 수 있으며 컨트롤의 DataContext를 VM에 직접 바인딩하여 각 인스턴스가 동일한 데이터에서 가져 오도록 할 수 있습니다.

CommandBar 유형에 통합 할 수있는 것이 아니라면 자신 만의 Page 하위 클래스를 만드는 것이 좋습니다. Template은 해당 을 HeaderFooter 사용자 지정 항목에 포장하며 Grid 패널에 표시됩니다. 이렇게하면 매번 새로운 사본이 생성되므로 ViewModel에 바인딩해야합니다.

최종 옵션은 하위 클래스 방법과 비슷하게 콘텐츠를 배치하는 머리글과 바닥 글을 가진 부모 Page을 만드는 것입니다. 이번에는 Frame을 포장하십시오. 그런 다음 FrameFrame.Navigate을 호출하면 머리글/바닥 글 컨트롤이 다시 생성되지 않고 그 사이의 콘텐츠 만 다시 만들어집니다.

대부분의 Windows 8/8.1 앱 샘플에서 이와 비슷한 내용을 볼 수 있습니다. 그들은 컨텐츠 프레임을 작성한 다음 샘플의 각 페이지를 탐색합니다 (일반적으로 탐색 ListBox의 선택 사항에 따라 다름).

조금 더 자세한 정보를 추가하면 약간의 답을 시도하고 좀 더 구체적으로 설명 할 수 있지만 설명 된 내용을 달성하기 위해 볼 수있는 일반적인 방법입니다.

업데이트 : 당신이 말한 한 내용을 바탕으로

가, 나에게 그것은 PageFrame 포장, 세 번째 옵션으로 이동하는 것입니다 할 수있는 쉬운 일처럼 보인다. 나는 아래쪽 막대가 탐색에 영향을주기가 쉽기 때문에 머리말이나 꼬리말이 페이지 전환의 영향을 받기를 원하지 않는 것처럼 들린다.당신이 공식 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 클래스입니다.

희망이 있다면 도움이되고 행복하게 코딩 할 수 있습니다.

+0

조금 더 많은 정보를 추가했습니다. –

+0

추가 정보를 반영하도록 업데이트했습니다. –

관련 문제