[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] 공공데이터 포털 API 이용 클라이언트 구현 Part 2

이미지
공공데이터 포털 API 이용 클라이언트 구현 Part 2 데이터 바인딩 AptTradeAPI를 통해 조회한 데이터를 Window.DataContext 속성에 바인딩 합니다. 1: private string CreateRequestUrl(string serviceKey, int pageNo, int numOfRows, string LAWD_CD, string DEAL_YMD) 2: { 3: string requestUrl = $"http://openapi.molit.go.kr/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTradeDev?ServiceKey={serviceKey}&pageNo={pageNo}&numOfRows={numOfRows}&LAWD_CD={LAWD_CD}&DEAL_YMD={DEAL_YMD}"; 4: return requestUrl; 5: } 6: private void BindData() 7: { 8: // 인증키 9: string serviceKey = apiKeyTextBox.Text; 10: int pageNo = Convert.ToInt32(pageNoTextBox.Text); 11: int numOfRows = Convert.ToInt32(numOfRowsTextBox.Text); 12: string LAWD_CD = LAWD_CDTextBox.Text; 13: string DEAL_YMD = DEAL_YMDTextBox.Text; 14: string requestUri = CreateRequestUrl(serviceKey, pageNo, numOfRows, LAWD_CD, DEAL_YMD); ...

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

이미지
공공데이터 포털 API 이용 클라이언트 구현 Part 1 공공데이터 포탈 회원 가입 및 요청 https://www.data.go.kr  회원 가입 후 사용하고자 하는 API 승인 요청을 합니다. 저는 아파트 실거래 API를 이용하기로 합니다.  아파트 실거래 API 승인이 완료되면 서비스 정보를 제공해주며 해당 정보를 이용해 API를 호출하여 이용할 수 있습니다. API 서비스 정보 API 응답 결과 응답 데이터 아파트 실거래 API는 응답 결과를 XML 형식으로 전달 합니다. ListView 컨트롤에 바인딩하기 위해 응답 결과 XML 데이터를 사용자 정의 객체 컬렉션으로 변환하는 작업이 필요합니다. TradeApt 객체 1: public class TradeApt 2: { 3: // 거래금액 4: public string TradeMoney { get; set; } 5: // 건축년도 6: public string YearOfConstruction { get; set; } 7: // 년 8: public string Year { get; set; } 9: // 도로명 10: public string RoadName { get; set; } 11: // 도로명건물본번호코드 12: public string RoadBuildingBonBun { get; set; } 13: // 도로명건물부번호코드 14: public string RoadBuildingBuBun { get; set; } 15: // 도로명시군구코드 16: public string RoadSiGunGuCode { get; set; } 17: // 도로명일련번호코드 18: public string RoadSerialNum...

MSDN WPF 샘플 따라하기 - IntroToStylingAndTemplating

이미지
IntroToStylingAndTemplating 이 샘플은 스타일을 사용하여 시각적으로 매력적인 사용자 환경을 만드는 방법을 보여주기 위해 디자인 된 간단한 사진 응용 프로그램입니다. Pohoto Class 이미지 경로를 가지는 모델 클래스를 정의 합니다. 1: public class Photo 2: { 3: public Photo(string path) 4: { 5: Source = path; 6: } 7: public string Source { get; } 8: public override string ToString() 9: { 10: return Source; 11: } 12: } PhotoList Class 속성 변경 시 알림 제공을 위해 ObservableCollection<T> 클래스를 상속 받는 Collection을 정의 합니다. PhotoList 클래스는 디렉토리가 경로가 설정 될 때 경로의 jpg파일을 갱신 합니다. 1: public class PhotoList : ObservableCollection<Photo> 2: { 3: private DirectoryInfo _directory; 4: public PhotoList() 5: { } 6: public PhotoList(string path) : this(new DirectoryInfo(path)) { } 7: public PhotoList(DirectoryInfo directory) 8: { 9: _directory = directory; 10: Update(); 11: } 12: public string Path 13: ...

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: MouseLeftBut...

MSDN WPF 샘플 따라하기 - DialogBox

DialogBox 이 샘플에서는 메시지 상자 및 공용 대화 상자를 사용하는 방법을 보여줍니다. 이 샘플에서는 모달 및 모덜리스 대화 상자를 만들고 사용하는 방법도 보여줍니다. 예제 시나리오: 대화상자를 이용한 파일 열기 대화상자를 이용한 파일 저장 대화상자를 이용한 파일 프린트 응용 프로그램 수동 종료 종료 시 문서를 저장 검색 기능을 하는 모달 대화 상자 만들기 폰트 설정 모달 대화 상자 만들기 문서 간격 설정 모달 대화 상자 만들기 예제에는 Window 외에 다른 기술들(Binding, ValidationRule 등)이 사용되고 있지만 해당 기술에 대해서는 예제를 벗어나는 주제 이므로 설명을 생각 하도록 하겠습니다. 메인 창 구성 Window는 Closing 이벤트를 추가하고, 상단은 Menu 컨트롤과 컨텐츠 영역은 TextBox로 포함하는 DockPanel로 구성 합니다.  메뉴 하위 자식인 MenuItem에 각 대화상자를 생성하는 이벤트를 추가 하고 마지막으로 본문인 TextBox에 TextChanged 이벤트를 추가 합니다. 1: <Window x:Class="DialogBox.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:Dialo...

MSDN WPF 샘플 따라하기 - LoadedEvent

LoadedEvent Window 클래스는 System.Windows.FrameworkElement를 상속 받아 Loaded 이벤트를 사용 할 수 있습니다. Loaded 이벤트는 창이 요소를 배치 및 렌더링하고 상호 작용할 수 있도록 준비 할 때 발생 합니다. ItemsControl의 Item을 동적으로 초기화 하거나 데이터를 바인딩 할 때 유용하게 사용할 수 있을 것으로 보입니다. 이 예제는 페이지가 로드 될 때 동적으로 버튼을 만드는 방법을 보여줍니다. 창 구성 Window의 Loaded 이벤트를 설정 합니다. 1: <Window x:Class="LoadedEvent.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:LoadedEvent" 7: mc:Ignorable="d" 8: Loaded="OnLoad" 9: Title="MainWindow" Height="350" Width="525"> 10: <StackPanel VerticalAlignment="Center" HorizontalAlignme...