하아찡

XAML TextBox에 TextBlock을 사용하여 PlaceHolder를 추가함. - 3 본문

WPF/XAML조각모음

XAML TextBox에 TextBlock을 사용하여 PlaceHolder를 추가함. - 3

하아찡 2023. 8. 5. 00:15

1편과 2편에서 셋팅한걸 이제 불러다 사용합니다.

MainWindow.xaml쪽 코드입니다.

<Window x:Class="TextBoxPlaceHolder.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:TextBoxPlaceHolder"
        xmlns:rclass="clr-namespace:TextBoxPlaceHolder.Themas.CustomControls.ResourceClass"
        mc:Ignorable="d"
        Title="MainWindow" Height="100" Width="240">
    <Grid>
        <rclass:CustomTextbox x:Name="CTextBox" HorizontalAlignment="Left" Height="50" Margin="4,4,0,0" TextWrapping="Wrap" TextValue="{x:Null}" VerticalAlignment="Top" Width="208" PlaceHolder="워터마크테스트"/>
    </Grid>
</Window>

코드를 업로드하기위해서 프로젝트를 다시 생성해서 이전과 다른 부분들이 있습니다.

 

내가 만든 클래스를 rclass로 등록 후 사용했습니다.

xmlns:rclass="clr-namespace:TextBoxPlaceHolder.Themas.CustomControls.ResourceClass"

 

이제 컨트롤을 불러다 사용하는데 DependencyProperty(의존성 속성)으로 등록한 변수값을 컨트를을 호출할때 값을 전달해줄 수 있습니다.

<rclass:CustomTextbox x:Name="CTextBox" HorizontalAlignment="Left" Height="50" Margin="4,4,0,0" TextWrapping="Wrap" TextValue="{x:Null}" VerticalAlignment="Top" Width="208" PlaceHolder="워터마크테스트"/>

TextValue에는 아무런 값을 전달해주지 않아 Textbox에 값이 존재하지 않는상태로 시작하게 설정했습니다.

PlaceHolder에는 워터마크로 사용할 TextBlock에 값을 설정해줍니다.

 

해당 코드는 아래 zip파일로 올려두겠습니다.

TextBoxPlaceHolder.zip
0.14MB

 

여기까지가 제가 만들어보고싶은 텍스트박스를 커스텀 컨트롤로 만드는 방식을 하나씩 풀어봤습니다. 공부하면서 부족하고 효율적이지 못한 코드들이 있겠지만 너그럽게 봐주세요~ 
Xaml을 공부하는데 자료들이 너무 건너뛰는 부분들이 있어서 하나씩 풀어봤습니다. 다른사람에게 조금이라도 도음이 될 수 있는 자료가 되면 좋겠습니다.
(정보글 쓰시는분들 대단한거같아요.. 글쓰는데 해줘야하는게 많네요. 머쓱)
 

 

 
틀린부분 지적은 언제든 환영합니다.
긴글 읽어주셔서 감사합니다.

반응형