XAML 17

#123_닷넷(.NET)_ WPF_ 계층적 바인딩

안녕하세요 삽잡이입니다. 이번 시간은 계층적 바인딩에 대해서 알아보려고합니다. 계층적 바인딩은 이와 같이 트리형태로 열립니다. 은근 복잡할 것 같지만, xaml 코드로 간단하게 한줄로 끝나지요...이를 계층적 바인딩이라고 부릅니다. TreeView의 Item에는 가장 최상위 요소인 Familes가 보입니다. 그리고 이 Families가 어떻게 나타날지에 대해서는 이와 같이 정의 되있습니다. 모든 Familes를 이와 같은 형식으로 보여주라고 명시한 것입니다.해당 예제에서는 모든 Familes를 TextBlock으로 보여주라고 하고 있습니다. 계층적 바인딩에는 계층적인 요소를 사용합니다.단일 요소에는 TextBox등이 있었고,다중 요소에는 ListBox, ComboBox등이 있었지요...이와 같이 계층적인..

#122_닷넷(.NET)_ WPF_ 마스터 디테일 바인딩

안녕하세요 삽잡이입니다. 이번 시간에는 마스터-디테일 바인딩에 대해서 알아보려고합니다. 리스트에 선택된 데이터에 따라상태 데이터들이 바뀌는 UI입니다.즉, 각 Family를 누르면 각각의 가족 구성원들이 나오고,각 구성원들을 누를 경우 그들의 특징에 대해서 나옵니다. 이와 같은 UI도 모두 바인딩에 의해 만들어진 것입니다.선택하면 자동적으로 선택에 맞게 보여진다 이거죠. 잘 보시면,ListBox들이 UI의 Column 0, 1, 2 순으로 차례대로 놓여있습니다. 이는 xaml 코드만 볼 것이 아닌,데이터 원본으로 설정 될 코드도 준비가 되어있어야합니다. Family 안에는 두 그룹이 있는데,이 그룹이 있는 클래스를 바인딩하게되면 UI에 보여지겠지요.이를 선형 바인딩이라고 하며,원소 두개가 Item에 보여..

#121_닷넷(.NET)_ WPF_ 데이터 바인딩_필터링 & 정렬 & 그룹핑

안녕하세요 삽잡이입니다. 이번 시간에는 정렬, 필터링, 그룹핑에 대해서 알아보려고 합니다.이 세가지 연산이 가장 집합 연산중에서 기본이 되는 연산입니다. 해당 연산들은 모두 View를 통해 이루어집니다.즉, View를 가지고 논다 이겁니다.원본을 가지고 놀면 왜 안되는지는... 아시겠지요...? 컬렉션을 View를 통해 UI에 보여줄 경우,전부 볼 일 없이, 필요한 것만 보거나, 정렬하고 싶을 때가 있습니다. 이때, ICollectionView 인터페이스를 구현하여원하는 View를 구현하여 바인딩 할 수 있습니다. 우선, 필터링입니다. 필터링 버튼을 눌렀을 경우, Default View를 얻어오게 됩니다.그리고 View에 Filter라는 속성이 null일 경우 새로운 필터를 장착하는 것이지요. 참고로 F..

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

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

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

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

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

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

#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가 없으면 이리 저리 변경되면 다시 최신화를 시켜야하고여러모로 수정할 일들이 많았습니다.그런데, 바인딩 기술을 사용하게 되면, ..