5월, 2019의 게시물 표시

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

MSDN WPF 샘플 따라하기 - SearchingForElement

SearchingForElement 이 예제에서는 요소를 검색하는 방법을 설명합니다. 시나리오: StackPanel의 자식 요소를 검색하여 찾은 요소의 색을 변경 합니다. 창 구성 요소를 찾는 이벤트가 설정 된 Button과 3개의 자식을 가지는 StackPanel을 선언 하고, Button, TextBlock 요소에 적용하는 Style을 Resources에 선언 합니다. 1: <Window x:Class="SearchingForElement.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:SearchingForElement" 7: mc:Ignorable="d" 8: Title="MainWindow" Height="350" Width="525"> 9: <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"> 10: <StackPanel.Resources> 11: <Style TargetType=...

MSDN WPF 샘플 따라하기 - UnhandledExceptionHandling

UnhandledExceptionHandling 이 샘플은 처리되지 않은 응용 프로그램 예외를 처리하기 위해 DispatcherUnhandledException을 처리하는 방법을 보여줍니다. 두 가지 시나리오: 복구 가능 예외 처리 복구 불가 예외 처리 예외 발생 구성 복구 가능 및 복구 불가 예외를 발생 시키는 이벤트를 가지는 버튼을 생성 합니다. 1: <Window x:Class="UnhandledExceptionHandling.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:UnhandledExceptionHandling" 7: mc:Ignorable="d" 8: Title="MainWindow" Height="350" Width="525"> 9: <StackPanel> 10: <Button Name="raiseRecoverableException" Click="raiseRecoverableException_Click">Raise Recoverable Exception</B...

MSDN WPF 샘플 따라하기 - SkinnedApplication

이미지
SkinnedApplication WPF 어플리케이션의 스킨을 동적으로 설정 및 변경하는 샘플 입니다.  이 샘플은 응용 프로그램 수준의 속성과 리소스를 사용하기에 먼저 응용 프로그램 속성 및 리소스를 살펴 보겠습니다. Application Property 응용 프로그램 범위의 Dictionary 형식으로 Application.Properties 속성을 통해 설정 및 조회 할 수 있습니다. 응용 프로그램 공유 설정으로 런타임에 설정 및 접근이 가능 합니다. 1: // 설정 2: Application.Current.Properties["Blue"] = new object(); 3: // 조회 4: object property = Application.Current.Properties["Blue"]; Application Resources 응용 프로그램 범위의 ResourceDictionary 형식으로 Application.Resources 속성을 통해 설정 및 조회 할 수 있습니다. 응용 프로그램 공유 리소스로 런타임에 설정 및 접근이 가능 합니다. 1: Application.Current.Resources.Add("KeyName", "Value"); 2: object get = Application.Current.Resources["KeyName"]; 위에 설명한 내용을 토대로 설정된 두 개의 스킨을 동적으로 변경하여 적용되는 샘플을 만들어 보겠습니다. ResourceDictionary 구성 프로젝트 > 추가 > 리소스 사전.. 을 통해 YellowSkin.xaml과 Blue.xaml을 생성 합니다. YellowSkin.xaml 1: <!-- Yellow Skin --> 2: ...

MSDN WPF 샘플 따라하기 - ApplicationShutdown

ApplicationShutdown WPF 응용프로그램 종료 시나리오에 대한 샘플 입니다. 종료 시나리오는: 마지막 창을 닫을 경우 응용 프로그램 종료 메인 창을 닫을 경우 응용 프로그램 종료 명시적으로 Shutdown 메서드 호출을 통한 응용 프로그램 종료 아래 예제는 어플리케이션의 종료 방법을 리스트 박스의 아이템 선택에 따라 어플리케이션 종료를 설정 적용해 볼 수 있습니다. 설정 창 구성 1: <Window x:Class="ApplicationShutdown.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:ApplicationShutdown" 7: mc:Ignorable="d" 8: Title="MainWindow" Height="350" Width="525" Loaded="MainWindow_Loaded"> 9: <DockPanel> 10: <StackPanel DockPanel.Dock="Top" Orientation="Horizontal"> 11: ...