{"id":1069,"date":"2017-03-16T19:37:36","date_gmt":"2017-03-16T18:37:36","guid":{"rendered":"http:\/\/piatkosia.k4be.pl\/wordpress\/?p=1069"},"modified":"2017-03-16T19:37:36","modified_gmt":"2017-03-16T18:37:36","slug":"pierwsza-ksiazka-wpfowa-w-naszej-bibliotece","status":"publish","type":"post","link":"https:\/\/piatkosia.k4be.pl\/wordpress\/2017\/03\/16\/pierwsza-ksiazka-wpfowa-w-naszej-bibliotece\/","title":{"rendered":"Pierwsza &#8222;ksi\u0105\u017cka&#8221; WPFowa w naszej bibliotece"},"content":{"rendered":"<p style=\"text-align: justify;\">Hejo.<\/p>\n<p style=\"text-align: justify;\">Trzeba napisa\u0107 jakiego\u015b technicznego posta do DSP, a tu wyjazd i nie ma jak;). Na szcz\u0119\u015bcie jad\u0119 dopiero jutro, wi\u0119c mam jeszcze kilka godzin dnia dzisiejszego, aby co\u015b popisa\u0107.<\/p>\n<p style=\"text-align: justify;\">Mam nadziej\u0119, \u017ce jaki\u015b kod mimo wszystko powstanie w poci\u0105gu, acz z publikacj\u0105 posta mo\u017ce by\u0107 gorzej, tak czy inaczej, postanowi\u0142am opisa\u0107 co\u015b, co mo\u017ce by\u0107 przydatne na pocz\u0105tku kariery, jednocze\u015bnie nie jest to \u017cadne rocket science wymagaj\u0105ce wi\u0119kszego przygotowania.<\/p>\n<p style=\"text-align: justify;\">A wi\u0119c\u2026<\/p>\n<p><!--more--><\/p>\n<p style=\"text-align: justify;\">Istniej\u0105 pewne elementy, kt\u00f3re nie s\u0105 specyficzne dla projektu. Do nich mo\u017cemy zaliczy\u0107 kontrolki, konwertery, jakie\u015b nak\u0142adki na winapi, tego typu rzeczy. Dla kodu mamy extract method, a dla element\u00f3w projektu? &#8222;Extract project&#8221;&#8230; hehe czyli mo\u017cliwo\u015b\u0107 stworzenia biblioteki. Oczywi\u015bcie biblioteka jest takim specyficznym projektem, kt\u00f3ry jest jak wirus- aby \u017cy\u0107, musi zosta\u0107 dodany do innego projektu. Sam nie ma mocy uruchomienia si\u0119.<\/p>\n<p style=\"text-align: justify;\">Zrobimy wi\u0119c sobie jedn\u0105 dla takich \u201eraw\u201d rzeczy, jedn\u0105 dla GUI.<\/p>\n<p style=\"text-align: justify;\">Dla raw, nie problem. Po prostu dodajemy nowy projekt w ramach tej samej solucji. Korzystamy z szablonu \u201eClass library\u201d przygotowanym w\u0142a\u015bnie do tego celu.<\/p>\n<p style=\"text-align: justify;\">Z WPFem ostatnim razem \u201eWPF control library\u201d dzia\u0142a\u0142o w wersji bodaj\u017ce 2010, a potem ju\u017c trzeba sobie by\u0142o szablon zrobi\u0107 samemu. Nie jest to jakie\u015b arcy trudne i sprowadza si\u0119 do wykonania nast\u0119puj\u0105cych krok\u00f3w.<\/p>\n<ol>\n<li>Tworzymy pusty projekt wpfowy i zmieniamy output type na class library. Wywalamy okno g\u0142\u00f3wne (mam tu na my\u015bli MainWindow.xaml czy cokolwiek analogicznego), oraz app.xaml bo jak napisano powy\u017cej- nie chcemy mie\u0107 mo\u017cliwo\u015bci uruchamiania jako aplikacji, co w ustawieniu output type powiedzieli\u015bmy, a nast\u0119pnie dodajemy pierwsz\u0105 kontrolk\u0119.<\/li>\n<li>Budujemy, jak przesz\u0142o to file\u2192 export template, po czym wybieramy []project template i z combo boxa nasz projekt co udaje libk\u0119. Potem wpisujemy cokolwiek, a nast\u0119pnie tworzymy projekt z nowego template (lub korzystamy z aktualnego projektu- nada si\u0119).<\/li>\n<li>Teraz tylko doda\u0107 referencje i mo\u017cna u\u017cywa\u0107;)<\/li>\n<\/ol>\n<p>W moim projekcie postanowi\u0142am przenie\u015b\u0107 do nowego liba kontrolk\u0119 stworzon\u0105 poprzednio i zacommitowa\u0107 zmiany, a tak\u017ce sprawi\u0107, by projekt przynajmniej dzia\u0142a\u0142 jak poprzednio.<\/p>\n<p>O czym nale\u017cy pami\u0119ta\u0107, je\u015bli si\u0119 przenosi co\u015b do liba:<\/p>\n<ol>\n<li>O zaktualizowaniu namespace\u2019\u00f3w w projekcie<\/li>\n<li>O przeniesienie wszystkiego, co zale\u017cy od przenoszonego obiektu (linkowanie w bibliotece do projektu g\u0142\u00f3wnego to z\u0142a praktyka- chyba si\u0119 domy\u015blacie dlaczego).<\/li>\n<li>O podpi\u0119cie referencji do nowego projektu (ale po pierwszym zbudowaniu, bo inaczej jest wykrzyknik, kt\u00f3ry rozprasza. )<\/li>\n<li>O zbudowaniu projektu z kontrolk\u0105 (a o tym w\u0142a\u015bnie zapomnia\u0142am:) &#8211; na szcz\u0119\u015bcie kochany VS mi o tym szybko przypomia\u0142.<\/li>\n<\/ol>\n<p>Po tych zabiegach kontrolka powinna by\u0107 widziana w toolboxie za\u015b \u201eraw\u201d funkcje i klasy powinny mie\u0107 opcj\u0119 podpowiadania.<\/p>\n<p style=\"text-align: justify;\">Mo\u017cliwo\u015bci u\u017cycia takich bibliotek s\u0105 dwie. Pierwsza z nich, to dodanie referencji do projektu, druga, do dllki, kt\u00f3ra si\u0119 nam skompiluje. Zalet\u0105 dllki jest to, \u017ce mo\u017cemy j\u0105 u\u017cy\u0107 w innym projekcie, a nawet da\u0107 komu\u015b (pami\u0119taj, aby skompilowa\u0107 j\u0105 w wersji \u201erelease\u201d zanim dodasz do \u201eproda\u201d). Kolejn\u0105 zalet\u0105 jest brak zale\u017cno\u015bci pomi\u0119dzy kodem \u201ebibliotecznym\u201d a naszym g\u0142\u00f3wnym projektem. Tzn mamy pewno\u015b\u0107, \u017ce lib sam z siebie do dzia\u0142ania nie b\u0119dzie potrzebowa\u0142 kodu z g\u0142\u00f3wnej apki, wi\u0119c nie podkusi nas by wys\u0142a\u0107 jej za du\u017co i zadbamy o t\u0119 separacj\u0119.<\/p>\n<p style=\"text-align: justify;\">Piatkosia, kiedy w ko\u0144cu przestaniesz si\u0119 bawi\u0107 i zaczniesz dostarcza\u0107 to, czego oczekuje od ciebie &#8222;strona biznesowa&#8221;. We\u017a w ko\u0144cu usu\u0144 pana Zenka z zablokowanych numer\u00f3w.<\/p>\n<p>Heh, nie wiem. Mo\u017ce kiedy\u015b. A poza tym to m\u00f3j czas wolny i b\u0119d\u0119 go sp\u0119dza\u0107 jak b\u0119d\u0119 chcia\u0142a :p<\/p>\n<p>PS dzi\u015b nie wklejam kodu. \u00a0Jest na githubie. Wiecie gdzie.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hejo. Trzeba napisa\u0107 jakiego\u015b technicznego posta do DSP, a tu wyjazd i nie ma jak;). Na szcz\u0119\u015bcie jad\u0119 dopiero jutro, wi\u0119c mam jeszcze kilka godzin<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/piatkosia.k4be.pl\/wordpress\/2017\/03\/16\/pierwsza-ksiazka-wpfowa-w-naszej-bibliotece\/\">Lecim dalej<span class=\"screen-reader-text\">Pierwsza &#8222;ksi\u0105\u017cka&#8221; WPFowa w naszej bibliotece<\/span> <i class=\"fas fa-angle-right\"><\/i><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[83,240,268,239,49,143],"tags":[276,242,275],"class_list":["post-1069","post","type-post","status-publish","format-standard","hentry","category-c_sharp","category-dajsiepoznac","category-dsp2017","category-konkursy","category-programowanie","category-wpf","tag-dsp","tag-wpf","tag-wpf-class-library","entry"],"_links":{"self":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1069","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/comments?post=1069"}],"version-history":[{"count":1,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1069\/revisions"}],"predecessor-version":[{"id":1070,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1069\/revisions\/1070"}],"wp:attachment":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/media?parent=1069"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/categories?post=1069"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/tags?post=1069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}