Silverlight/Experiment

실버라이트 PasswordBox (= Password TextBox) 구현하는 꼼수 하나 소개

길버트리 2008. 9. 26. 11:12
꼼수의 발견

아시는 분은 아시겠지만, 실버라이트 2, Beta 2 까지도 아직 패스워드 입력을 위한 PasswordBox가 없었습니다.

그래서 해외의 개발자들이 열심히 노력하여 CodePlex 등을 통해 공유하는 소스가 있기는 했습니다.
그렇지만 방향키 문제라던가, 백스페이스를 눌렀을 때 암호를 한 글자씩 지워지게 할 수 없고 전체가 지워지는
단점들이 고쳐지지 않고 있었습니다.

휴즈플로우에서도 PasswordBox 구현하다가 그냥 기본 컨트롤로 포함되서 나올 때까지 기다리자는 결론을
내린바 있었습니다.

그런데 어제는 이 문제에 관한 정말 기발한 아이디어를 가진 사람을 발견했습니다.

바로 abcd 대신에 *문자만 가득 채운 Password.ttf 폰트를 만들어서 활용하는 방법이었습니다.
감잡으셨죠? ^^

실버라이트 기본컨트롤인 TextBox에 폰트만 Password.ttf#Password로 설정하여 사용하면 됩니다.
기발하지 않나요?

자세한 내용은 지난 8월 포스팅된 dev-trick.net(개발꼼수닷넷 정도 되겠네요.)의 이 글를 읽어 보십시오.


문제점

꽤 쓸만할 것 같은 이 꼼수에도 다음과 같은 문제가 있는데요.

1) ********로 표현된 패스워드를 복사하여 메모장 같은 곳에 붙이기 하면 원래의 글자가 나온다.
2) 한글입력 시 한글이 그냥 화면에 표시된다.
(테스트를 진행해준 공도씨에게 감사 ^^)

2번 문제는 한글폰트를 기반으로 모든 문자를 *로 치환한 '용량 큰' Password.ttf 파일을 만들면 해결될 듯도 하였지만,
IME3가 적용되어 있는 실버라이트 TextBox 같은 경우에는 '감'을 타이핑 했을 경우 세번 타이핑했음에도 불구하고,
조합이 된 후 한 글자가 되어 ***이 아닌 *로 표시되게 될 것이기 때문에 해결이 안됩니다.
그리하여, 결국 이 방법은 100% 해결책이 못됩니다. 특히 유니코드민족에게는...


...그래도 여전히 아이디어 하나는 기발했다고 생각합니다.