[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...

MSDN WPF 샘플 따라하기 - NonRectangularWindow

NonRectangularWindow

이 샘플에서는 Window 형식의 Background, AllowsTransparency 및 WindowStyle 속성을 사용하여 구성된 비 사각형 창을 만드는 방법을 보여줍니다.

WindowStyle을 None으로 설정하면 최소화, 최대화, 닫기 버튼이 없기 때문에 직접 구현 해줘야 합니다. 그리고 창을 마우스 왼쪽 버튼을 이용해 이동이 가능하도록 하기 위해 MouseLeftButtonDown 이벤트를 이용해 창 드래그를 구현 합니다.

창 구성

1:  <Window x:Class="NonRectangularWindow.MainWindow"  
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:NonRectangularWindow"  
7:      mc:Ignorable="d"  
8:      Title="NonRectangularWindowSample"  
9:      WindowStyle="None"  
10:      AllowsTransparency="True"  
11:      Background="Transparent"  
12:      MouseLeftButtonDown="Window_MouseLeftButtonDown">  
13:    <Canvas Width="200" Height="200">  
14:      <!-- Path를 통해 사각형 가장자리를 둥그렇게 생성 -->  
15:      <Path Stroke="DarkGray" StrokeThickness="2">  
16:        <Path.Fill>  
17:          <LinearGradientBrush StartPoint="0.2,0" EndPoint="0.8,1" >  
18:            <GradientStop Color="White" Offset="0" />  
19:            <GradientStop Color="White" Offset="0.45" />  
20:            <GradientStop Color="LightBlue" Offset="0.9" />  
21:            <GradientStop Color="Gray" Offset="1" />  
22:          </LinearGradientBrush>  
23:        </Path.Fill>  
24:        <Path.Data>  
25:          <PathGeometry>  
26:            <PathFigure StartPoint="40,20" IsClosed="True">  
27:              <LineSegment Point="160,20" />  
28:              <ArcSegment Point="180,40" Size="20,20" SweepDirection="Clockwise" />  
29:              <LineSegment Point="180,80" />  
30:              <ArcSegment Point="160,100" Size="20,20" SweepDirection="Clockwise" />  
31:              <LineSegment Point="90,100" />  
32:              <LineSegment Point="90,150" />  
33:              <LineSegment Point="60,100" />  
34:              <LineSegment Point="40,100" />  
35:              <ArcSegment Point="20,80" Size="20,20" SweepDirection="Clockwise" />  
36:              <LineSegment Point="20,40" />  
37:              <ArcSegment Point="40,20" Size="20,20" SweepDirection="Clockwise" />  
38:            </PathFigure>  
39:          </PathGeometry>  
40:        </Path.Data>  
41:      </Path>  
42:      <!-- 텍스트 -->  
43:      <Label Width="200" Height="120" FontSize="15" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">Drag Me</Label>  
44:      <!-- 닫기 버튼 -->  
45:      <Button Canvas.Left="155" Canvas.Top="30" Click="CloseButtonRectangle_Click">  
46:        <Button.Template>  
47:          <ControlTemplate>  
48:            <Canvas>  
49:              <Rectangle Width="15" Height="15" Stroke="Black" RadiusX="3" RadiusY="3">  
50:                <Rectangle.Fill>  
51:                  <SolidColorBrush x:Name="myAnimateBrush" Color="Red" />  
52:                </Rectangle.Fill>  
53:              </Rectangle>  
54:              <Line X1="3" Y1="3" X2="12" Y2="12" Stroke="White" StrokeThickness="2" />  
55:              <Line X1="12" Y1="3" X2="3" Y2="12" Stroke="White" StrokeThickness="2" />  
56:            </Canvas>  
57:          </ControlTemplate>  
58:        </Button.Template>  
59:      </Button>  
60:    </Canvas>  
61:  </Window>  

창 닫기 및 이동

1:      private void CloseButtonRectangle_Click(object sender, RoutedEventArgs e)  
2:      {  
3:        Close();  
4:      }  
5:      private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)  
6:      {  
7:        DragMove();  
8:      }  































댓글

이 블로그의 인기 게시물

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

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

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