This article is currently in the process of being translated into Korean (~93% done).
Access Keys
액셀러레이터 키나 단축키라고 불리는 액세스 키는 Alt 키를 누른 채로 다른 키를 눌러 윈도우 내의 특정 컨트롤에 접근하는 방법입니다. 마우스를 사용하지 않고 키보드로만 윈도우를 조작할 수 있기 때문에, 액세스 키를 사용하면 윈도우의 편의성이 높아집니다.
Defining Access Keys
WPF 컨트롤의 액세스 키를 정의하기는 쉽지만, 방법이 다소 놀랍습니다. 보통 이런 경우 속성을 사용하겠지만, 액세스 키는 그렇지 않습니다. 그 대신, Text 나 Content 속성 내의 문자 앞에 언더스코어(_)를 붙이는 것으로 액세스 키를 정의합니다. 예를 들면 다음과 같습니다:
<Button Content="_New"></Button>
문자 N 앞에 언더스코어(_)가 붙은 것을 보시기 바랍니다 - 이렇게 하면 N 키가 이 버튼 컨트롤의 액세스 키가 됩니다. 아래 예제에서는 모든 버튼에 액세스 키를 할당했는데, 보시다시피 기본 상태에선 컨트롤의 외관이 변하지는 않습니다:
하지만, Alt 키를 누르는 순간, 사용 가능한 액세스 키가 밑줄로 표시됩니다:
Alt 키를 누른 채로, 액세스 키(e.g. N, O 또는 S)를 눌러 특정 버튼을 작동시킬 수 있습니다. 버튼의 동작은 마우스로 클릭했을 때와 동일합니다.
액세스 키는 대화 상자나 창의 단일 요소에 쓰기 좋지만, 보통 메뉴 항목을 단계적으로 클릭해서 필요한 항목에 도달해야 하는 기존의 윈도우즈 메뉴에서 훨씬 더 쓸모가 있습니다. 다음은 Visual Studio의 사례입니다.
이 경우, 새로운 프로젝트를 시작하고 싶을 때 마우스를 여러 번 이동하고 클릭해서 메뉴를 탐색하지 않고도, Alt 키를 누른 상태에서 F(File)를 누른 다음 N(New) 과 P(Project)를 누릅니다. 물론 정규 키보드 단축키(Ctrl+Shift+N)로도 이 작업을 수행할 수 있지만, 메뉴 계층의 마지막 수준에 도달할 때까지는 단축키가 표시되지 않으므로, 그것을 기억하지 못할 때에는 Alt 키를 누르는 즉시 시각적으로 강조되는 액세스 키를 사용하는 것이 더 쉬울 것입니다.
어떤 문자가 액세스 키로 사용되는가?
컨트롤의 텍스트나 내용에서 보이는 문자들 중에서 아무거나 사용하려고 할 수도 있지만, 실제로 올바른 문자를 선택하기 위한 지침이 있습니다. 가장 중요한 규칙은 당연히 다른 컨트롤에서 사용하지 않는 문자를 선택하는 것이지만, 그 밖에도 다음 지침을 사용해야 합니다.
- 첫 번째 문자의 첫 문자를 쓰시오.
- 그것이 불가능하면, 두 번째 또는 세 번째 단어의 첫 문자를 쓰시오.(예: Save As(다른 이름으로 저장)에서 A)
- 그것이 불가능하면, 첫 단어의 두 번째 문자를 쓰시오.(예: Open(열기)에서 P
- 그것이 불가능하다면, 두 번째나 세 번째 단어의 두 번째 문자를 쓰시오.(예: Save All(모두 저장)에서 I)
- 일반적으로 i나 l처럼 폭이 좁은 글자는 피하고, m, s, w 같은 것처럼 폭이 더 넓은 글자를 택하고 싶을 것이다.
Tying together two controls
지금까지 본 예에서 우리가 도달하려는 컨트롤에 직접 액세스 키를 정의할 수 있었습니다. 그러나 이것이 직접적으로 가능하지 않은 예가 적어도 한 가지 있습니다. 예를 들어, TextBox와 같은 입력 컨트롤을 가진 경우, 그 목적을 나타내는 텍스트는 실제 텍스트박스(TextBox) 컨트롤 내에 존재하지 않습니다. 대신에, 보통 두 번째 컨트롤을 사용하여 텍스트와 함께 텍스트박스(TextBox) 컨트롤의 목적을 나타냅니다. 이것은 보통 Label 컨트롤입니다.
그래서, 다음 예제에서 Label 컨트롤은 설명 텍스트를 가지고 있으므로 액세스 키도 가지고 있지만, 주의를 기울일 컨트롤은 TextBox 컨트롤이 됩니다. 레이블의 Target 속성을 사용하여 TextBox(또는 다른 컨트롤)와 연결할 수 있습니다. 다음과 같이 하면 문제 없습니다.
<StackPanel Margin="20">
<Label Content="_First name:" Target="{Binding ElementName=txtFirstName}" />
<TextBox Name="txtFirstName" />
<Label Content="_Last name:" Target="{Binding ElementName=txtLastName}" />
<TextBox Name="txtLastName" />
<Button Content="_Save" Margin="20"></Button>
</StackPanel>
액세스 키가 Label 컨트롤에 지정된 다음 Target 속성을 사용하여 관련 TextBox 컨트롤에 연결되는 방법에 유의하십시오. ElementName 기반 Binding을 사용하여 실제 작업을 수행할 수 있습니다. 이제 'Alt + F'과 'Alt + L'을 사용하여 두 개의 TextBox 컨트롤에 접근할 수 있으며 Alt + S가 있는 버튼에 접근할 수 있습니다. 다음과 같이 보입니다.
Summary
창이나 대화 상자에서 액세스 키를 사용하면, 사용자가 키보드만 사용하여 탐색하는 것을 보다 편하게 만들 수 있습니다. 이것은 특히 가능한 마우스 대신 키보드를 사용하는 파워 유저들 사이에서 인기가 있습니다. 액세스 키는 항상, 특히 메뉴에 사용해야 합니다.