003. WPF / PlaceHolder, Hint, Watermakr가 적용된 TextBox, PasswordBox

Programming/Old 2016. 5. 26. 15:49

원본 출처 : http://stackoverflow.com/questions/833943/watermark-hint-text-placeholder-textbox-in-wpf

-------------------------------------------------------------


WPF에는 기본적으로 TextBox에 힌트(PlaceHoder라고도 하고, Watermark라고도 함) 텍스트를 제공하지 않는다. 


그러니 구현을 해야겠지만, 너무 귀찮아서 위의 사이트에서 소스 코드를 구했다.

그러나 이 코드는 TextBox에만 해당되지, PasswordBox에서는 힌트 텍스트를 사용할 수 없었다.

다행히 어려운 코드는 아니었기 때문에 코드를 약간 변형하여 PasswordBox에서도 힌트 텍스트를 사용할 수 있도록 하였다.




 WatermarkBox.zip

사용하시려면 먼저 첨부파일을 받아 클래스 파일을 프로젝트에 Import하세요.

그 다음, xaml에서 아래처럼 코드를 작성하시면 됩니다.


- 네임스페이스 추가

xmlns:controls="clr-namespace:[Namespace Directory]"

[Namespace Directory]에 Import한 클래스의 네임스페이스명을 적어주세요.


- TextBox의 예

<TextBox>
<controls:WatermarkService.Watermark>
<TextBlock>아이디를 입력하세요.</TextBlock>
</controls:WatermarkService.Watermark>
</TextBox>


- PasswordBox의 예

<PasswordBox>
<controls:WatermarkService.Watermark>
<TextBlock>비밀번호를 입력하세요.</TextBlock>
</controls:WatermarkService.Watermark>
</PasswordBox>


텍스트 정렬이 조금 어려울 수 있습니다. 

힌트 텍스트 정렬과 관련된 코드는 WatermarkAdorner.cs의 생성자 내부의 아래 코드를 요리조리 변경하시면 변경하실 수 있습니다.

this.contentPresenter.Margin = new Thickness(Control.Margin.Left - 8, Control.Margin.Top + Control.Padding.Top, 0, 0);






admin