[WPF] 공공데이터 포털 API 이용 클라이언트 구현 Part 3

이미지
그룹핑 ListViewItem 그룹핑 할 수 있습니다. 먼저 CheckBox에 Checked 이벤트를 통해 그룹핑을 추가하고 RemoveChecked 이벤트를 통해 그룹핑을 제거 할 수 있도록 CheckBox를 선언 합니다. 1: <!-- Group CheckBox --> 2: <CheckBox Grid.Column="0" 3: Grid.Row="0" 4: Checked="AddGrouping" 5: Unchecked="RemoveGrouping">Group by Name</CheckBox> 그룹 스타일 선언 GroupStyle 속성에 ContainerStyle 속성을 이용해 Style을 지정 합니다. Expander 컨트롤을 이용해 아파트명과 그룹 아이템의 개수를 Expander Header에 표시 하도록 ControlTemlate를 선언 합니다. 1: <!-- Group Style --> 2: <ListView.GroupStyle> 3: <GroupStyle> 4: <GroupStyle.ContainerStyle> 5: <Style TargetType="{x:Type GroupItem}"> 6: <Setter Property="Margin" Value="0,0,0,5" /> 7: <Setter Property="Te...

WPF Layout를 이용한 회원 가입 윈도우 만들기

오늘은 WPF의 Layout 기능을 이용한 어플 시작 페이지를 만들어 보고자 합니다.

결과물 부터 확인 해 보겠습니다.

계정 만들기

초기 비어 있는 유저 사진 공간을 채울 이미지를 제외 하고는 WPF의 Layout 기능만 가지고 구현 할 수 있습니다.

이 Layout은 상위부터 하위까지 각 로우 별로 하나의 엘레멘트를 가지고 있는 구조이기에 저는 StackPanel을 이용해 구현 하였습니다.

그럼 XAML 코드를 한번 볼까요?

StackPanel 태그를 선언 합니다.

StackPanel에 Margin을 적당하게 설정 합니다.
1:  <Window x:Class="WunderlistDoIt.RegisterWindow"  
2:      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
4:      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
5:      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
6:      xmlns:local="clr-namespace:WunderlistDoIt"  
7:      mc:Ignorable="d"  
8:      Title="RegisterWindow"   
9:      Height="650"   
10:      Width="450">  
11:    <StackPanel Margin="10">      
12:    </StackPanel>  
13:  </Window>  

사용자 이미지 버튼을 생성 합니다.

사용자가 마우스를 클리하여 이미지를 선택 할 수 있어야 하기에 Button 태그를 선언하며, 사용자 이미지를 Button에 표현하기 위해 Content 속성에 Image 태그를 설정 합니다.
1:  <!-- Button -->  
2:  <Button Name="btnUserImage" Margin="160,60,160,50">  
3:    <Button.Content>  
4:      <Image Source="Images/unknown_user.PNG" Stretch="Fill" />  
5:    </Button.Content>  
6:  </Button>  

안내 문구를 생성 합니다.

안내 문구를 표현을 위해 필요한 TextBlock 속성을 설정 합니다.
1:  <!-- Text -->  
2:  <TextBlock FontWeight="Bold"   
3:            FontSize="22"   
4:            HorizontalAlignment="Center"  
5:            Text="무료 계정 만들기" />  
6:  <!-- Text -->  
7:  <TextBlock Margin="20,5,20,0"  
8:            FontSize="14"   
9:            Foreground="#CCCCCC"  
10:            HorizontalAlignment="Center"  
11:            TextWrapping="Wrap"  
12:            Text="계정을 만들면 모든 장치에서 목록을 동기화하고 친" />  
13:  <TextBlock Margin="20,0,20,20"  
14:            FontSize="14"   
15:            Foreground="#CCCCCC"  
16:            HorizontalAlignment="Center"   
17:            Text="구와 공유할 수 있습니다." />  

사용자가 정보 관련 TextBox를 생성 합니다.

사용자의 이름, 이메일, 비밀번호를 입력 받을 수 있는 TextBox 태그를 선언하고 Layout 관련된 속성을 적당히 설정 합니다.
1:  <!-- Name TextBox -->  
2:  <TextBox Name="txtName"  
3:           Margin="15,5,15,5"  
4:           Height="40"  
5:           BorderBrush="#CCCCCC"></TextBox>  
6:  <!-- Email TextBox -->  
7:  <TextBox Name="txtEmail"  
8:           Margin="15,5,15,5"  
9:           Height="40"  
10:           BorderBrush="#CCCCCC"></TextBox>  
11:  <!-- Password TextBox -->  
12:  <TextBox Name="txtPasword"  
13:           Margin="15,5,15,5"  
14:           Height="40"  
15:           BorderBrush="#CCCCCC"></TextBox>  

회원 가입 버튼을 생성 합니다.

Button 태그를 이용해 버튼을 생성 하고, 배경색을 바꾸기 위해 Backgound 속성에 변경하고자 하는 RGB값을 넣습니다. 버튼은 기본으로 Border 속성 값이 설정 되어 있지만, 이번에 필요가 없으 BorderThickness 속성을 0으로 설정 합니다. 그 외에 필요한 속성을 설정 합니다.
1:  <!-- Register Button -->  
2:  <Button Name="btnRegister"  
3:          Margin="15,5,15,5"  
4:          FontWeight="Bold"  
5:          FontSize="18"  
6:          Background="#2B88D9"  
7:          BorderThickness="0"  
8:          Foreground="White"  
9:          Height="40"   
10:          Content="가입하기" />  

안내 문구를 생성 합니다.

TextBlock 태그를 이용해 안내 문구를 작성 합니다. 밑줄이 들어간 부분은 웹 사이트 링크라는 것이므로 HyperLink 태그를 사용하도록 하고, 한 줄로 표현하기에 문장이 길어 TextBlock 태그를 2번 사용 합니다.
1:  <!-- Text -->  
2:  <TextBlock Foreground="#CCCCCC"  
3:            FontSize="14"  
4:            Margin="30,30,30,0"  
5:            HorizontalAlignment="Center">  
6:        <Bold>계정을 만들면</Bold>  
7:        <Hyperlink Foreground="#CCCCCC" NavigateUri="https://naver.com" RequestNavigate="Hyperlink_RequestNavigate">이용약관</Hyperlink> 및  
8:        <Hyperlink Foreground="#CCCCCC" NavigateUri="https://naver.com" RequestNavigate="Hyperlink_RequestNavigate">개인정보취급방침</Hyperlink>에 동의하게  
9:  </TextBlock>  
10:  <TextBlock Foreground="#CCCCCC"  
11:            FontSize="14"  
12:            HorizontalAlignment="Center">  
13:        됩니다.  
14:  </TextBlock>  

여기까지 StackPanel를 이용한 Layout 작업을 마무리 하겠습니다.

댓글

이 블로그의 인기 게시물

[C#] Task 완료 시 다른 Task를 자동으로 수행

[C#] 태스크(Task)가 완료될 때 까지 대기하여 결과를 얻는 방법

[C#] 명시적으로 Task 생성 및 실행