티스토리 뷰

Windows 8

[Windows 8] SettingsPane에 항목 집어넣기

생각많은 소심남 2012. 10. 13. 17:34

여러분 혹시 win키 +c를 눌러보셨나요? 아마 Windows 8을 쓰신다면 반드시 이런 창이 뜰겁니다.

 

 

이게 App CharmBar라고 하는 겁니다. 여기서 각 항목들이 다 앱과 연계되어 있습니다. 이를테면 앱을 실행한 상태에서 설정을 누르게 되면 앱의 설정창으로 들어가게 만들 수 있다는 것이지요. 저 같은 경우에는 다음과 같이 나타납니다.

 

 

 이와 같이 설정을 눌렀을 때 나타나는 창을 SettingsPane이라고 합니다. 예시는 저번에 한번 소개해드렸던 제 블로그 RSS Reader입니다. 원래 기본 앱을 만들고 설정창을 열면 다음과 같이 나옵니다.

 

 

원래는 위와 같이 개인 권한이라는 항목밖에 없습니다. 사실 앱을 스토어에 올릴 때 중요하게  보는 요소 중 하나가 사용자에게 개인 정보 관련 규칙을 제대로 공지하느냐 이고, Win 8 앱에서는 위와 같이 SettingsPane 상에 그 규칙을 보여지는 것을 원칙으로 합니다. 그래서 이번 포스트에서는 한번 제 예시처럼 메뉴를 삽입하는 것을 해보고자 합니다.

우선 이 항목은 전반적인 앱 동작에 관여하는 항목이므로 동작을 관장하는 App.xaml.cs 에서 코드 전체가 이뤄집니다. 우선은 위의 네임스페이스를 추가시켜야 합니다.

 

 

settingsPane에 관한 이벤트가 UI.Popups에 포함되어 있고, 거기서 application의 setting이 이뤄지기 때문에 위의 두 라이브러리가 필요합니다.

이렇게 추가하면 SettingsPane이라는 개체에 접근할 수 있게 됩니다. 자 이제 앱이 실행되었을 때 이 settingsPane의 기능도 활성화시키기 위해서는 창이 켜지는 순간 활성화되는 OnLaunched 이벤트에 들어가야되겠지요.

 

 

그냥 직역하면 현재 보고 있는 창상태에서 SettingsPane에 대한 명령이 들어오면 App_CommandsRequested 이벤트가 생길겁니다. 아마 여기까지 하면 이벤트 하나가 자동으로 생성될겁니다. 거기에 다음과 같이 작성합니다.

 

 

우선 유념할 사항은 위와 같이 SettingsPane이 열렸다고 해도 이 창은 출력하는데 필요한 코드지 실제로 그 출력된 내용을 눌렀을 때에 대한 세부 설정은 다른데서 이뤄져야 합니다. 그에 대한 내용을 따로 handler와  generalCommand 라는 개체로 표현했습니다. 이때도 하나의 이벤트가 필요한데 바로 OnSettingsCommand라는 이벤트 핸들러가 활성화 될겁니다.겁니다. 바로 위와 같은 예시에서는 개인정보 관리라는 창을 누르게 되었을 이 이벤트가 발생하게 될겁니다. 그래서 그항목을 하나의 ApplicationCommands list에 삽입하는 형식을 취하게 되는 겁니다. 만약 다른거도 넣어보고 싶다 그러면 여러가지를 넣어보면 됩니다.

아참 아마 onSettingsCommand가 자동적으로 생성되는 이벤트가 아니라서 오류가 나시는 분이 계실텐데 이때는 해당 이벤트를 그냥 만들어주면 됩니다. 해당 개체에 마우스를 가져다 대면 새로운 버튼이 생기는데 그걸 누르면 됩니다.

 

 

이걸 누르게 되면 메서드가 자동으로 생깁니다.

 

 

그럼 이제 이 이벤트 안에 자신이 원하는 기능을 삽입하면 됩니다. 저같은 경우에는 이 버튼을 누르면 개인정보 관리에 관한 포스트가 되어 있는 홈페이지로 연결하도록 했습니다. 그렇게 구현하려면 다음과 같이 됩니다.

 

 

우선 위와 같이 이벤트 생성하게 되면 자동으로 받아오는 인자가 IUIcommand로 선택되어 있습니다. 물론 Setting에 관한 명령은 이 command라는 개체에 따라서 적용됩니다.

자 아까 생성하는 Settings command에 string형 Label이 들어가는데 이값을 비교해서 거기에 맞춰 명령을 다르게 주면 되겠지요. 저같은 경우는 저 개인정보 관리란 메뉴를 누르게 되면 자동으로 웹사이트에 접속하게끔 해놓았습니다. 물론 다수의 Settings command가 있다면 그걸 각각 비교해도 적당히 구현될겁니다. 자 결과를 한번 보겠습니다.

 

 

SettingsPane에 간단한 명령을 삽입하는 방법에 대해서 알아보았습니다. 구조 자체가 어려운 개념은 아닌데 이 앱을 스토어에 공개하고 할때는 반든시 사용자 정보 관리에 대한 언급이 참바에 표현되어야 하기 때문애 이점 유념하셔서 앱을 만드셨으면 좋겠네요.

댓글