C# 123

#113_닷넷(.NET)_ WPF_ 최상위 윈도우

WPF 응용 프로그램의 주 윈도우는 최상위 윈도우입니다.최상위 윈도우는독립적으로 존재하는 윈도우들을 의미하지요. 메인 윈도우는 하나일지라도,최상위 윈도우는 여러개가 있을 수 있습니다. 즉, 소유관계가 존재하지 않는 독립적인 윈도우를 최상위 윈도우라고 부릅니다.그래서 Main 윈도우도 역시 최상위 윈도우라고 부를 수 있는 것이지요. 일반적으로, Main 윈도우를 제외한 다른 윈도우를 닫아도 프로그램이 종료되지 않습니다.하지만 이 외에도 여러가지 방식으로 프로그램을 종료시킬 수 있는 옵션들을 제공해줍니다. 메인 윈도우뿐만 아니라,다른 최상위 윈도우가 모두 종료되게 되면 프로그램이 종료되도록 하던지,최상위 윈도우가 종료되게 되더라고 프로그램이 살아있도록 할 수 있습니다. 즉, 윈도우가 마지막으로 종료될 때 닫..

#112_닷넷(.NET)_ WPF_ 컨트롤 템플릿(Control Template)

안녕하세요 삽잡이입니다. 이번 시간에는 컨트롤 템플릿에 대해서 알아보려고합니다. 컨트롤 템플릿이란,컨트롤이 가지고 있는 외형을 완벽하게 변화시킬 수 있다는 개념입니다.이전에 이름이 비슷한 DataTemplate에 대해서 배웠던 기억이 나시지 않습니까!? 그런데 이 둘은 전혀 다른 개념입니다.Template은 '틀'을 의미하는데,ControlTemplate의 경우 컨트롤 외간의 틀을 의미합니다.즉, 어떻게 화면상에 보여줄것인지에 대한 틀을 설명하는 것이지요. DataTemplate은 ListBox를 생각해보시면 됩니다.내부에 ListBox 아이템들이 어떻게 보여질지에 대해서 결정할 때즉, 컨트롤 외간이 아니라, ListBox 내부에 들어있는 아이템이 보여지는 방식!? 틀!?이 정도로 생각하시면 됩니다.Li..

#111_닷넷(.NET)_ WPF_ 리소스(Resource)

안녕하세요 삽잡이입니다. 지난 시간에는 데이터 바인딩을 XAML 코드로써 나타냈습니다.이번 시간에는 WPF에서의 리소스에 대해서 알아보려고합니다. 리소스는 지금까지의 개념으로는 즉, UI에서 사용하는 리소스가 아닌 일반적인 리소스의 개념은시스템으로부터 얻고, 사용한 뒤에 반환해줘야하는 자원들이었습니다. 그런데, API로부터 리소스란 의미는디자이너와 프로그래머가 분류해서 협업하기 위한 구성요소중디자이너에 있는 요소들을 리소스라고 불렀습니다. 헷갈리게도 WPF에서 또 용어의 의미가 약간 달라집니다.데이터에다가 이름을 붙일 수 있으면 모두 다 리소스라고 부르게 된 것입니다.즉, 개념이 확장된 것이지요. 지금부터 WPF에서의 리소스에 대해서 알아보겠습니다. WPF에서 리소스는 이름만 설정할 수 있으면,이미지이던..

#110_닷넷(.NET)_ WPF_ XAML로 데이터 바인딩 (Binding)

안녕하세요 삽잡이입니다. ... ㅜㅜ 지난 시간들에 이어서 계속하여 데이터 바인딩에 대해서 공부중입니다.마치 설명은 못하고 혼자 정리하는 감이 들어혹시나 읽으시는 분들에게 여러모로 죄송한 마음이 들군요... 허허.. 데이터 바운딩은 속성 대 속성으로 해줘야합니다.이를 수행하기 위해 이전시간까지 코드를 통해 바인딩을 해줬었습니다.그런데, 사실 바인딩 문법은 XAML 코드에서 설정하는 것이 훨씬 효율적이기 때문에 XAML에서 바인딩을 해주곤 합니다. 데이터 바인딩을 수행하기 위해서 ListBox의 ItemTemplate 속성을 지정할 수 있는 것이죠. Item은 ListBox의 Item이라는 약자이며,ListBoxItem은 어떻게 ListBox의 Item들을 나타낼 것인지에 대한 템플릿입니다.따라서 Data..

#109_닷넷(.NET)_ WPF_ 다중 UI요소 데이터 바인딩 (Binding)

안녕하세요 삽잡이입니다. 지난 시간부터 WPF의 데이터 바인딩에 대해서 알아보고 있습니다. 바인딩을 할 때에는 단일 요소와 바인딩 할 수도 있지만,ListBox와 같이 Collection과도 바인딩을 할 수 있습니다. ListBox는 여러개의 데이터를 한꺼번에 보여주는 UI 입니다.TextBox의 데이터 원본은 객체이지만,ListBox의 데이터 원본은 객체들의 Collection이 되겠지요.실질적으로 ListBox 자체가 여러개의 아이템을 화면에 보여주고자 해서 만들어 졌기 때문에,Collection과 바인딩 되는 것이 맞습니다. 따라서, ListBox와 같이 다중 요소를 가진 UI와 데이터 바인딩을 할 때에는,컬렉션 내에 각각 객체들이 Sync를 이루도록 해줘야겠지요.만약, 컬렉션이 세개의 객체를 가지..

#108_닷넷(.NET)_ WPF_ 데이터 바인딩 (Binding)의 이해

안녕하세요 삽잡이입니다. 이번 시간부터는 WPF의 핵심 기술인 바인딩에 대해서 알아보려고합니다.바인딩이라는 기술이 있는 덕분에코드를 굉장하게 유연하게 가져올 수 있게 됩니다. 바인딩이라는 용어는 간단하게,사용자와 대화하는 UI 요소와 개념적으로 객체를 연결하는 것을 의미합니다. 바인딩을 하기 위한 목적의 핵심은 두가지입니다.바로, '동기화'와 '형식 변환'입니다. 우선, 왜 바인딩을 하는데에 동기화가 필요할까요?ADO.NET에서 데이터 테이블을 누군가 변경하게 되면, 테이블들이 다 변경되게 했듯이즉, View에 연결되어있는 녀석들은 모두 Sync를 이루어 변경됬었습니다. Sync가 없으면 이리 저리 변경되면 다시 최신화를 시켜야하고여러모로 수정할 일들이 많았습니다.그런데, 바인딩 기술을 사용하게 되면, ..

#107_닷넷(.NET)_ WPF_ 레이아웃(Layout)

안녕하세요 삽잡이입니다. 이번 시간에는 WPF에서의 레이아웃에 대한 내용을 알아보려고합니다. 레이아웃은 외각, 틀, 형태를 의미하는 용어입니다.WPF에서의 레이아웃은 가지고 있는 요소들에 대한 정렬 방법 및 규칙에 대해서 제공해줍니다.여기에는 핵심적인 역할을 하는 패널이라는 컨트롤이 있죠. 패널(Panel)은 자신의 콘텐츠를어떻게 정렬해야하는지 알고 있는 컨트롤 입니다.내부에 콘텐츠들이 모여있으면, 어떻게 정렬해야하는지를 다 가지고 있다는 것입니다. 대표적인 패널 컨트롤에는Canvas, DockPanel, Grid, StackPanel, UniformGrid, WrapPanel 이 있습니다. 각 컨트롤들을 간략하게 설명하자면... Canvas는 위치와 크기를 이용해 정렬하는 컨트롤입니다.DockPanel..

#106_닷넷(.NET)_ WPF_ WPF 타입 상속 구조

안녕하세요 삽잡이입니다. 이번시간에는 WPF의 타입 상속 구조에 대해서 알아보려고합니다. 해당 그림은 클래스의 상속 구조를 보여주는 예제입니다. 여기에는 FrameworkElement 타입이 있습니다.Control 이 있고, ContentControl이 있군요... 여기서 알아야할 것은 모든 것이 Content로 사용될 수 있으나,모든 요소가 Content를 가질 수 있다는게 아니라는 것입니다. Content는 object 형식입니다.정수, 문자열, 실수 들도 모두 Content로 가질 수 있습니다.하지만, 모든 요소들이 Content를 가질 수 있는게 아닙니다. ContentControl은 속성 Content를 갖습니다.예를 들어보면 윈도우, 버튼 등 모두 속성 Content를 갖고 있었습니다.이들이 ..

#105_닷넷(.NET)_ WPF_XBAPs

기본적으로 XAML 코드는 윈도우 창에서 동작할 수 있도록 되어있습니다.그런데, Visual Studio에서 사용할 때에는C#과 관련된 코드들이 포함되어 사용하게 됩니다. 그런데, C#과 관련된 코드들을 모두 제거하게 된다면? Visual Studio에서 사용할 때에는 반쪽 코드가 사라졌기 때문에 오류가 발생합니다. 이건 Visual Studio에의 경우고...C#과 관련된 어떠한 코드도 존재하지 않는다면,XAML로만 동작하는 언어가 되기 때문에 다른 컨테이너를 통해 실행이 가능하도록 할 수 있습니다. 대표적으로 kaxaml 이라는 프로그램이 있지요. 아무튼...순수하게 XAML 코드로 만들어졌기 때문에,kaxaml과 같이 XAML 컴파일러를 동작할 수 있는 프로그램이라면 코드가 실행되지요. 또한, [프..

#104_닷넷(.NET)_ WPF_ XAML 특성&속성&이벤트

안녕하세요 삽잡이입니다. .xaml 코드를 보게되면 속성들이 보입니다. Window라는 Element가 Root Element가 되고이 외에 지금 xmlns, xmlns:x, Title, Height, Widht와 같은 속성이 있습니다.이들을 모두 Element의 특성이라고 부르지요. 이 중에서 아마 xmlns, xmlns:x가 뭔지 궁금해하시는 분들이 계실 것입니다.이들은 XML Namespace를 뜻하는 특성들입니다. 전자는 기본 네임스페이스후자는 X 네임스페이스라고 부릅니다. xml은 Mark Up의 네임스페이스를 가지지요.원래 네임스페이스를 앞에 명시해주는 것입니다.우리가 지금껏 테그명만 썼던 것은 바로 기본 네임스페이스를 사용했기 때문입니다. 그런데 이 네임스페이스들이 어마어마합니다.사실 실제 ..