{"id":394,"date":"2007-06-25T16:59:00","date_gmt":"2007-06-25T16:59:00","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=394"},"modified":"2017-01-29T12:24:04","modified_gmt":"2017-01-29T03:24:04","slug":"%ec%8a%a4%ed%83%80%ec%9d%bc-%ea%b7%b8%eb%a6%ac%ea%b3%a0-%ed%85%9c%ed%94%8c%eb%a6%bfstyle-template","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=394","title":{"rendered":"\uc2a4\ud0c0\uc77c \uadf8\ub9ac\uace0 \ud15c\ud50c\ub9bf(Style, Template) &#8211; {1\/3}"},"content":{"rendered":"<p>WPF\uc758 \uc2a4\ud0c0\uc77c\uacfc \ud15c\ud50c\ub9bf \uae30\ub2a5\uc744 \uc774\uc6a9\ud558\uba74 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc678\ud5a5\uc744 \uace0\uae09\uc2a4\ub7fd\uace0 \uc138\ub828\ub418\uac8c \ubc14\uafc0 \uc218 \uc788\uace0, \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc880\ub354 \ud6a8\uacfc\uc801\uc73c\ub85c \uc2dc\uc2a4\ud15c\uc744 \uc774\ud574\ud558\uace0 \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \ud658\uacbd\uc744 \uc81c\uacf5\ud560\uc218 \uc788\ub2e4.<\/p>\n<p>\uba3c\uc800 \uc2a4\ud0c0\uc77c\uacfc \ud15c\ud50c\ub9bf\uc774 \uc804\ud600 \uc801\uc6a9\ub418\uc9c0 \uc54a\ub294 \uac83\ubd80\ud130 \uc2dc\uc791\ud574\uc11c \ub2e8\uacc4\uc801\uc73c\ub85c \ud558\ub098 \ud558\ub098 \uc801\uc6a9\ud574 \uac00\uba74\uc11c \uc5b4\ub5bb\uac8c \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc678\ud5a5\uc774 \uace0\uae09\uc2a4\ub7fd\uac8c \ubc14\ub00c\uc5b4 \uac00\ub294\uc9c0\ub97c \uc0b4\ud3b4\ubd04\uc73c\ub85c\uc368 WPF\uc758 \uc2a4\ud0c0\uc77c\uacfc \ud15c\ud50c\ub9bf\uc744 \uc774\ud574\ud574 \ubcf4\ub3c4\ub85d \ud558\uaca0\ub2e4.<\/p>\n<p>\uc544\ub798\uc758 \ucf54\ub4dc\uac00 \ucc98\uc74c \ub2e8\uacc4\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc774\uba70 \uc774\uc5b4\uc9c0\ub294 \uc774\ubbf8\uc9c0\uac00 \uc2e4\ud589\uacb0\uacfc\uc774\ub2e4.<\/p>\n<pre><code class=\"html\"><Window x:Class=\"StylingIntroSample.Window1\"\r\n    xmlns=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\/presentation\"\r\n    xmlns:x=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\"\r\n    xmlns:local=\"clr-namespace:StylingIntroSample\"\r\n    Loaded=\"WindowLoaded\" \r\n    Title=\"StylingIntroSample\" \r\n    SizeToContent=\"WidthAndHeight\">\r\n  \r\n  <Window.Resources>\r\n    <ObjectDataProvider x:Key=\"MyPhotos\"\r\n      ObjectType=\"{x:Type local:PhotoList}\"\/>\r\n  <\/Window.Resources>\r\n  \r\n  <StackPanel Margin=\"25\">\r\n    <TextBlock Name=\"textblock1\">My Photos<\/TextBlock>\r\n    <TextBlock>Check out my new photos!<\/TextBlock>\r\n    <ListBox ItemsSource=\"{Binding Source={StaticResource MyPhotos}}\"\r\n             Background=\"DarkGray\" Width=\"900\" Height=\"200\"  \r\n             Margin=\"10\" SelectedIndex=\"0\"\/>\r\n    <\/StackPanel>\r\n<\/Window><\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1397889530.png\" class=\"aligncenter\" width=\"393\" height=\"338\" alt=\"\" \/>\ud754\uc774 \uc6b0\ub9ac\uac00 \ub9ce\uc774 \ubd10\uc654\ub358 UI\uc778\ub370, \uc0c1\ub2e8\uc5d0 2\uac1c\uc758 TextBlock\uc774 \uc788\uace0 \ubc14\ub85c \uc544\ub798\uc5d0 \uc788\ub294 ListBox\uc5d0 jpg \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c \uacbd\ub85c\uac00 \ub098\ud0c0\ub098 \uc788\ub2e4.<\/p>\n<p>\uc2a4\ud0c0\uc77c\uacfc \ud15c\ud50c\ub9bf\uc744 \uc801\uc6a9\ud574\ubcf4\uae30\uc5d0 \uc55e\uc11c, \ud55c\uac00\uc9c0 \uad81\uae08\uc99d\uc744 \ud480\uc5b4\ubcf4\ub3c4\ub85d \ud558\uc790. <\/p>\n<p>ListBox\uc5d0 \ub098\ud0c0\ub09c jpg \uc774\ubbf8\uc9c0 \ud30c\uc77c\uc758 \uacbd\ub85c \ubb38\uc790\uc5f4\uc740 \uc5b4\ub514\uc11c \uc654\ub294\uac00? &lt;ListBox>\uc758 \uc18d\uc131 \uc911\uc5d0 ItemsSource\uac00 \uadf8 \ud574\ub2f5\uc73c\ub85c \uac00\ub294 \uae38\uc758 \uc2dc\uc791\uc810\uc774\ub2e4. ItemSource \uc18d\uc131\uc5d0 MyPhotos\ub77c\ub294 StaticResource\ub97c \ubc14\uc778\ub529\ud558\uace0 \uc788\ub2e4. \uadf8\ub807\ub2e4\uba74 MyPhotos\ub294 \ubb34\uc5c7\uc778\uac00? &lt;Window.Resources>\uc5d0 \ubcf4\uba74 &lt;ObjectDataProvider>\ub97c \uc774\uc6a9\ud574\uc11c PhotoList\ub77c\ub294 \ud074\ub798\uc2a4\ub97c MyPhotos\ub77c\ub294 Key\ub85c \uc0dd\uc131\ud558\uace0 \uc788\ub2e4.<\/p>\n<p>\uc774\uc81c PhotoList \ud074\ub798\uc2a4\uc5d0 \ub300\ud574\uc11c \uc0b4\ud3b4\ubcf4\ub3c4\ub85d \ud558\uc790. PhotoList\ub294 Photo\ub77c\ub294 \ud074\ub798\uc2a4\ub97c \uad00\ub9ac\ud574\uc8fc\ub294 Collection\uc73c\ub85c\uc368 \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ub418\uc5b4 \uc788\ub2e4.<\/p>\n<pre><code class=\"html\">public class PhotoList : ObservableCollection<Photo>\r\n{\r\n    public PhotoList() { }\r\n\r\n    public PhotoList(string path) : this(new DirectoryInfo(path)) { }\r\n\r\n    public PhotoList(DirectoryInfo directory)\r\n    {\r\n        _directory = directory;\r\n        Update();\r\n    }\r\n\r\n    public string Path\r\n    {\r\n        set {\r\n            _directory = new DirectoryInfo(value);\r\n            Update();\r\n        }\r\n\r\n        get { return _directory.FullName; }\r\n    }\r\n\r\n    public DirectoryInfo Directory\r\n    {\r\n        set\r\n        {\r\n            _directory = value;\r\n            Update();\r\n        }\r\n\r\n        get { return _directory; }\r\n    }\r\n\r\n    private void Update()\r\n    {\r\n        foreach (FileInfo f in _directory.GetFiles(\"*.jpg\"))\r\n        {\r\n            Add(new Photo(f.FullName));\r\n        }\r\n    }\r\n\r\n    DirectoryInfo _directory;\r\n}<\/code><\/pre>\n<p>\uba3c\uc800, PhotoList\ub294 ObservableCollection&lt;Photo>\uc5d0\uc11c \ud30c\uc0dd\ub418\uc5c8\ub294\ub370, ObservableCollection\uc740 \ucf5c\ub809\uc158\uc5d0\uc11c \uc790\uc2e0\uc774 \uad00\ub9ac\ud558\uace0 \uc788\ub294 \ub370\uc774\ud130(\uc5ec\uae30\uc11c\ub294 Photo \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4)\uac00 \uc0ad\uc81c, \ucd94\uac00\ub4f1\uacfc \uac19\uc740 \ubcc0\uacbd\uc774 \uc788\uc744 \uacbd\uc6b0 \ud1b5\uc9c0\ub97c \ud574\uc8fc\ub294 \ud074\ub798\uc2a4\uc774\uba70, ListBox \ucee8\ud2b8\ub864\uc758 ItemSource\uac00 \ub420 \uc218 \uc788\ub294 \ud074\ub798\uc2a4\uc774\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c PhotoList\uac00 \ud558\ub294 \uc77c\uc740 \ud2b9\uc815 \ud3f4\ub354\uacbd\ub85c\ub97c \ubc1b\uc544\uc11c \uadf8 \uacbd\ub85c\uc5d0 \uc788\ub294 \ud655\uc7a5\uc790\uac00 jpg\uc778 \ud30c\uc77c\uba85\uc744 \ud1b5\ud574 Photo\ub77c\ub294 \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \ub9cc\ub4e4\uc5b4 \uc900\ub2e4. \uc774\uc81c Photo \ud074\ub798\uc2a4\uc5d0 \ub300\ud574\uc11c \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n<pre><code class=\"html\">public class Photo\r\n{\r\n    public Photo(string path)\r\n    {\r\n        _source = path;\r\n    }\r\n\r\n    public override string ToString()\r\n    {\r\n        return Source;\r\n    }\r\n\r\n    private string _source;\r\n\r\n    public string Source { get { return _source; } }\r\n}<\/code><\/pre>\n<p>Photo\ub294 \ubb34\ucc99 \uac04\ub2e8\ud55c \ud074\ub798\uc2a4\uc778\ub370, \ud558\ub294 \uc77c\uc740 \ub2e8\uc9c0 \ubb38\uc790\uc5f4(\uc5ec\uae30\uc11c\ub294 jpg \ud30c\uc77c\uba85)\uc744 \uc18d\uc131\uc73c\ub85c \uac00\uc9c0\uace0 \uc788\uace0 ToString\uc744 \ud1b5\ud574 \ubc18\ud658\ud558\ub294 \uc77c\uc744 \ud55c\ub2e4.<\/p>\n<p>\uc774\uc81c \ub2e4\uc2dc XAML\uc5d0\uc11c \uc0b4\ud3b4\ubcf8 PhotoList \ud074\ub798\uc2a4 \ud0c0\uc785\uc73c\ub85c\uc368 \uc0dd\uc131\ub41c MyPhotos\ub77c\ub294 Key\ub97c \uac00\uc9c4 \uac1d\uccb4\uc5d0 PhotoList \ud074\ub798\uc2a4\uac00 jpg \ud30c\uc77c\uba85\uc744 \uc218\uc9d1\ud560 \uacbd\ub85c\uba85\uc744 \uc9c0\uc815\ud574\uc57c \ud558\ub294\ub370, \uadf8\uac83\uc740 \ud574\ub2f9 XAML\uc5d0 \ub300\ud55c Code-Behind \ucf54\ub4dc \uc548\uc758 WindowLoaded \uc774\ubca4\ud2b8\uc5d0\uc11c \uc774\ub8e8\uc5b4\uc9c0\uac8c \ub41c\ub2e4.<\/p>\n<pre><code class=\"html\">private void WindowLoaded(object sender, RoutedEventArgs e)\r\n{\r\n    Photos = (PhotoList)(this.Resources[\"MyPhotos\"] \r\n        as ObjectDataProvider).Data;\r\n\r\n    Photos.Path = \"...\\\\...\\\\Images\";\r\n}<\/code><\/pre>\n<p>\uc774\uc81c \uc9c0\uae08\uae4c\uc9c0\uc758 \ucf54\ub4dc\ub97c \uae30\ubcf8\uc73c\ub85c \ub2e4\uc591\ud55c \uc2a4\ud0c0\uc77c\uacfc \ud15c\ud50c\ub9bf\uc744 \uc801\uc6a9\ud560 \uc900\ube44\uac00 \ub05d\ub0ac\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WPF\uc758 \uc2a4\ud0c0\uc77c\uacfc \ud15c\ud50c\ub9bf \uae30\ub2a5\uc744 \uc774\uc6a9\ud558\uba74 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc678\ud5a5\uc744 \uace0\uae09\uc2a4\ub7fd\uace0 \uc138\ub828\ub418\uac8c \ubc14\uafc0 \uc218 \uc788\uace0, \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc880\ub354 \ud6a8\uacfc\uc801\uc73c\ub85c \uc2dc\uc2a4\ud15c\uc744 \uc774\ud574\ud558\uace0 \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \ud658\uacbd\uc744 \uc81c\uacf5\ud560\uc218 \uc788\ub2e4. \uba3c\uc800 \uc2a4\ud0c0\uc77c\uacfc \ud15c\ud50c\ub9bf\uc774 \uc804\ud600 \uc801\uc6a9\ub418\uc9c0 \uc54a\ub294 \uac83\ubd80\ud130 \uc2dc\uc791\ud574\uc11c \ub2e8\uacc4\uc801\uc73c\ub85c \ud558\ub098 \ud558\ub098 \uc801\uc6a9\ud574 \uac00\uba74\uc11c \uc5b4\ub5bb\uac8c \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc678\ud5a5\uc774 \uace0\uae09\uc2a4\ub7fd\uac8c \ubc14\ub00c\uc5b4 \uac00\ub294\uc9c0\ub97c \uc0b4\ud3b4\ubd04\uc73c\ub85c\uc368 WPF\uc758 \uc2a4\ud0c0\uc77c\uacfc \ud15c\ud50c\ub9bf\uc744 \uc774\ud574\ud574 \ubcf4\ub3c4\ub85d \ud558\uaca0\ub2e4. \uc544\ub798\uc758 \ucf54\ub4dc\uac00 \ucc98\uc74c \ub2e8\uacc4\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc774\uba70 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=394\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;\uc2a4\ud0c0\uc77c \uadf8\ub9ac\uace0 \ud15c\ud50c\ub9bf(Style, Template) &#8211; {1\/3}&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[21],"class_list":["post-394","post","type-post","status-publish","format-standard","hentry","category-wpf","tag-wpf"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=394"}],"version-history":[{"count":2,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/394\/revisions"}],"predecessor-version":[{"id":3621,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/394\/revisions\/3621"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=394"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}