총 삽질들 514

#120_닷넷(.NET)_ WPF_ 데이터 바인딩_데이터 템플릿

안녕하세요 삽잡이입니다. 이번 시간에는 데이터 템플릿에 대해 알아보려고합니다. 이 UI를 보여드린 이유는데이터 템플릿이 핵심이기 때문입니다. 리소스에 데이터 템플릿을 형식화 하게 되면틀에 대해 쉽게 추가 및 제거를 할 수 있게 됩니다. 해당 예제에서는 Person에 대한 데이터 타입의 템플릿이 정의되어있습니다.즉, DataTemplate을 리소스에 정의했습니다.이를 형식화된 데이터 템플릿이라고 합니다. 리소스에 데이터 템플릿을 지정하되,데이터 타입에 대한 형식을 지정하게 되면,위의 UI와 같은 데이터 템플릿 형식이 보이게 된다 이겁니다. 이와 같이 데이터 템플릿을 직접 지정하지 않고,타입(Person)이 보여질 것 같으면,모두 다 템플릿에 맞춰 보여줄 수 있는 것이지요. 이와 같이, 형식화된 데이터 템플..

#119_닷넷(.NET)_ WPF_ 데이터 바인딩_유효성 검사

안녕하세요 삽잡이입니다. 이번 시간에는 데이터 유효성 검사에 대해서 알아보려고합니다. 사용자로 부터 입력을 받게 될 때, 해당 데이터가 UI로 들어갈 데이터에 맞는 성격인지, 혹은, 제대로 입력했는지 검사하는 것을'유효성 검사'라고 부릅니다. 예를 들어 나이를 입력하는 UI가 있다고 해봅시다.여기에 SAP, 100000 이런 값이 오면 되겠습니까?즉, 사용자의 Input이 맞는지를 보는 것입니다.데이터가 올바른지 검사하는게 아니구요... 엉뚱한 값이 바인딩 된 데이터에 저장되면 안되겠지요...따라서, 유효성은 데이터에 최신화 되기 전에 실시합니다. 모든 사용자 Input이 들어오는 곳에는 유효성검사가 있어야합니다.그런데, 이 유효성 검사가 데이터 바인딩과 어떤 상관이 있을까요? WPF에서는 UI에 입력받..

#118_닷넷(.NET)_ WPF_ 데이터 바인딩_ 형식변환 (Converter)

안녕하세요 삽잡이입니다. 지~난 시간에 바인딩에 대해서 알아본 적이 있는데요 (참고),이 데이터 바인딩에 연장 선상이라고 생각하시고 또 한번 바인딩에 대해서 알아보겠습니다. 이번 시간에는 Converter라는 바인딩 클래스의 속성을 사용하여보여지는 내용을 형식 변환할 수 있다는 사실에 대해서 알아보려고합니다. 데이터 바인딩의 핵심은 '동기화'와 '타입 변환'이지요. Binding을 할 때에는 여러 속성들을 사용할 수 있습니다. 기존에는 Path를 생략하고 단지 속성과 연결해주는 것이 바인딩이라고 생각했었는데,Path는 단지 데이터 원본 객체의 데이터에 대한 경로를 설정하는 것이었습니다.그런데, Path는 Default이기 때문에 생략하며 사용했던 것이죠. 이런식으로... 이 외에도 여러 속성들이 존재하는..

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

안녕하세요 삽잡이입니다. 이번 시간에는 WPF의 컨트롤에 대해서 알아보려고합니다. WPF에서 컨트롤들은 모두 '동작'을 구현한 것입니다.그리고, 컨트롤의 외관에 대한 책임은 모두 '템플릿'이 가지고 있습니다. 기존 컨트롤들은 사용자와 대화하는 인터페이스 요소일 뿐이었죠.하지만, WPF에서는 완벽하게 이를 분리해버렸습니다.WPF에서 컨트롤은 행동만을 가지고 있습니다. 컨트롤의 외관을 생각해보면...WPF 이전에 기존 컨트롤들은 외관이 다 정해져있었습니다.하지만, WPF에서는 컨트롤을 정의하는데 외관은 상관이 없어진 것입니다.왜냐? 단지 행동만을 담당하기 때문이지요.외관은 템플릿이 담당해주는 것입니다. 단지, 우리가 도구상자를 통해 컨트롤들을 사용하게 될 때자동으로 외관이 잡히는 이유는 바로, 기본 템플릿으..

#116_닷넷(.NET)_ WPF_ Command 처리

안녕하세요 삽잡이입니다. 이번 시간에는 커멘드 처리에 대해서 알아보려고합니다. 커멘드란, 우리 말로 명령입니다.그래서 이 커멘드라는 용어를 WPF에서는명령 객체를 만들고 사용하는 방법이라고도 합니다. 복사하기에 대한 예시를 들어보자면,드래그하여 Ctrl +C / V를 통해 복,붙이 가능하고,복사하기라는 UI 요소를 통해 복,붙을 하기도 하지요. 어찌됬건, Ctrl + V를 하던, 복사 버튼을 누르던 등등모두 클립보드에 포커스가 가지고 있는 내용물을 집어넣으려 한다는 사실은 똑같다는 것입니다. 어떠한 경우던,행동은 똑같기 때문에 이럴 때 커멘드 객체를 만드는 것입니다.즉, 각각의 이벤트에 대한 핸들러를 일일히 만들 필요 없이,명령에 대한 인터페이스를 만드는 것이지요. 이와 같이 명령 객체를 만들어 놓기만 ..

#115_닷넷(.NET)_ WPF_ 키보드 입력

안녕하세요 삽잡이입니다. 이번 시간에는 키보드 입력에 대해서 알아보려고합니다. 키보드는 마우스 포인터와 같이 어느 윈도우를 타겟으로 하고 이벤트를 받을 것인지에 대한 포커스가 없습니다.따라서, 키보드에서는 논리적인 포커스와, 키보드 포커스라는 기능을 제공합니다. 키보드는 자원이고,UI 요소 중 하나만이 키보드 입력을 받아들일 수 있습니다.키보드 입력을 받아들일 수 있는UI 요소를 표현하기 위해서 포커스라는 개념을 제공하게 되는 것이지요.즉, 포커스를 가지고 있는 녀석만이 키모드 메시지를 받을 수 있게 됩니다. 키보드 포커스는,실제로 지금 포커스를 받고 있는 녀석을 의미하고,논리적인 포커스는,이전에 포커스를 받고 있던 녀석을 의미합니다. 나눠논 이유가 있을까요? 절대로! 블로그 홍보가 아닙니다... 하하...

#114_닷넷(.NET)_ WPF_ 라우팅된 이벤트 (Routed Event)

안녕하세요 삽잡이입니다.이번 시간에는 라우팅 된 이벤트에 대해서 알아보려고합니다. 버튼이라는 콘트롤에 있는 모든 콘텐츠들을 각각의 색상으로 칠해봤습니다. 여기서 버튼의 콘텐츠라고 하면,버튼 내에 모든 것들을 말할 수 있지요. 빨간색 배경 안에 있는 것들이 모두 버튼의 콘텐츠 입니다. 코드가 아닌, 버튼이라는 UI만 보더라도,Grid 내부에 Canvas, Button, Ellipse, TextBlock등이 있는 것을 알 수 있습니다. 각각의 Element들을 색상으로 구분지어봤고,중요한 것은 어떤 Element던지 버튼이 클릭되면, 이벤트가 발생할 수 있다는 사실입니다. Canvas가 버튼의 콘텐츠이기에 버튼이 클릭된것 처럼 보이고,Ellipse를 클릭해도, TextBlock을 클릭해도 모두 버튼이 클릭된..

#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에서 리소스는 이름만 설정할 수 있으면,이미지이던..