기본 PasswordBox 컨트롤…
일단 TextBox의 기능을 많이 제거 하였으며
무엇보다. Sealed로 되어 있어서 상속을 못한다!!!
그래서 상속받아서 나만의 컨트롤을 만들수가 없고
더 중요한건!!!
InputScope를 지원안한다는거… 어휴..
나는 Number 만 쓰는 PasswordBox를 만들고 싶었지만
윈폰에서 제공 되지 않아서 이리저리 찾아보았지만 단한개의 Numberic PasswordBox가 없었다.!!!
이럴수가?
할수없이 컨트롤을 만들었다 하지만 사용하기는 쉽지 않을것 같다.
빨리 만들려고 UserControl로 만들었다.
public partial class NumbericPasswordCtl : UserControl { StringBuilder _fakeString; public NumbericPasswordCtl() { InitializeComponent(); _fakeString = new StringBuilder(); xRealTB.Opacity = 0; xRealTB.KeyUp += new System.Windows.Input.KeyEventHandler(xRealTB_KeyUp); } private void xRealTB_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key == System.Windows.Input.Key.Unknown) return; if (e.Key == System.Windows.Input.Key.Back) { if (_fakeString.Length <= 0) return; _fakeString.Remove(_fakeString.Length - 1, 1); } else { _fakeString.Append("*"); } xFakeTB.Text = _fakeString.ToString(); } }
<Grid x:Name="LayoutRoot"> <TextBlock IsHitTestVisible="False" x:Name="xFakeTB" Foreground="White" FontSize="56" /> <TextBox InputScope="Number" x:Name="xRealTB"/> </Grid>
원리는 InputScope가 지원되는 TextBox위에 TextBlock를 덮어 씌우고 IsHitTestVisible을 false로 하였다.
그래서 TextBox에 숫자를 입력하지만 사용자가 보이는것은 TextBlock에 * 을 보게 될것이다.
이건 패스워드box에 워터마크를 추가하는것에 흰트를 얻었는데
Toolkit에서 지원하는 TextBox에는 Hint를 제공해주지만 PasswordBox는 지원해주지 않는다.
PasswordBox 워터마크도 비슷한 방법으로 사용할수 있다.
참고 : http://damianblog.com/2011/01/21/wp7-password-watermark/
'Windows Phone 7' 카테고리의 다른 글
[wp7] URLDiffer 프로그램 (0) | 2012.02.08 |
---|---|
[wp7] 윈폰7에선 TextboxChanged 이벤트가 2번 들어온다? (0) | 2012.02.03 |
[wp7] List의 선택한 값의 Index값을 알고 싶을때 IndexWhere (0) | 2012.01.30 |
[wp7] Linq에서 StackPanel 의 Children에 있는 Item 비교하기 (Casting) (0) | 2012.01.30 |
[wp7] Navigate 페이지간 이동시 데이터 전송하는 여러가지 방법 (0) | 2012.01.26 |