๊ธ€

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