WPF27 [WPF] Create Custom Control (커스텀 컨트롤 만들기) - 행열 선택기(RowColumn Selector) [2] 이제 본격적으로 컨트롤을 만들어보자. 프로젝트를 만들고, 새 아이템 추가를 해서 'Custom Control(WPF)'를 선택해서 추가한다.이름은 일단 RowColumnSelector 라고 지정하였다. 생성하면 RowColumnSelector.cs 파일 하나와, Themes폴더가 생기고 Themes 폴더 안에 Generic.xaml 이라는 파일이 생성되는 것을 확인할 수 있다.RowColumnSelector.cs 파일에서 해당 컨트롤의 동작을 구현하고, Generic.xaml 파일에서 해당 컨트롤의 뷰를 구현하게 된다. Generic.xaml 파일을 보면 다음과 같은 코드가 작성되어 있다. 우리가 필요로 하는 건 앞에서 언급했듯이 1. 팝업을 열기 위한 버튼(토글버튼)2. 행, 열을 선택하기 위한 팝업 .. 2012. 12. 11. [WPF] Create Custom Control (커스텀 컨트롤 만들기) - 행열 선택기(RowColumn Selector) [1] WPF에 기본으로 제공하지 않는 컨트롤이 필요할 때가 있다. 이 때 기존의 것들을 억지로 조합하는 것보다 새로운 컨트롤을 생성하는 편이 더 쉬울 수 있다. 앞으로 몇 개의 포스팅을 통해 직접 만들어 사용했던 '행열 선택기' 컨트롤을 만드는 과정을 정리하려 한다. 우선 '행열 선택기(RowColumn Selector)' 라고 이름붙인 컨트롤은 Word나 한글에서 표를 삽입할 때 사용하는 컨트롤로, 역시 표를 생성할 때 행의 갯수, 열의 갯수를 선택하고자 할 때 사용하였다. 숫자가 아니라 도형을 통해 직관적으로 표의 모양을 선택할 수 있다는 장점을 갖고 있다. 먼저 이 컨트롤을 만들기 위한 구성요소를 생각해보면, 크게는1. 팝업을 띄우기 위한 버튼2. 팝업창 으로 이루어져 있고, 팝업창 은 다시2-1. 타이.. 2012. 12. 4. [WPF] ScrollViewer Tips (스크롤뷰어 Tips) - 2. RequestBringIntoView - RequestBringIntoView ScrollViewer 에는 내부의 객체에 Focus가 되었을 때, 자동으로 해당 객체를 향해 스크롤되도록 하는 기능이 있다. 이 기능을 확인하기 위해 다음과 같은 구조를 만들어 보자. Button 1 Button 2 Button 3 실행을 하고, Button2를 눌러보자. 그러면 스크롤뷰어가 Button2를 향해 움직이는 것을 확인할 수 있다. 이 기능을 막는 방법은 다음과 같다. 해당 ScrollViewer 내부의 객체, Focus 될 객체에서 RequestBringIntoView 라는 이벤트를 잡아 e.Handled=true 로 처리해주면 된다. 위의 예제에서는 다음과 같이 처리하면 된다. xaml :Button 2 c# :private void Button.. 2012. 12. 4. [WPF] Custom Routed Event (라우팅 이벤트 만들기) 유저컨트롤을 만들거나, 커스텀 컨트롤을 만들어서 사용할 때, 이벤트를 직접 만들어서 사용하고자 하는 경우가 있다. 직접 Routed Event를 만드는 방법을 알아보자. Routed Event에 대한 개념은 이전 포스팅에 간단히 포함되어 있다. 방법은 간단하다. 1. 원하는 이벤트를 생성하고2. 생성한 이벤트를 등록하고3. 해당 이벤트를 원하는 시점에 발생 시켜주면 된다. MSDN의 예제 코드를 통해 살펴보자. public class MyButtonSimple: Button { // Create a custom routed event by first registering a RoutedEventID // This event uses the bubbling routing strategy public sta.. 2012. 9. 11. [WPF] Routed Event (라우팅 이벤트) WPF 에서 중요한 개념 중 하나는 Routed Event 이다. 간단히 버튼을 클릭했을 때 발생하는 Click 이벤트, 혹은 패널을 클릭했을 때 발생하는 MouseDown, MouseUp 등의 것들이 Routed Event 에 포함된다.하지만 꼭 엘리먼트에서만 발생하는 것은 아니고 코드 상에서 임의로 발생시킬 수도 있기 때문에, MSDN의 정의를 참조하도록 하자. . 기능 측면의 정의 : Routed Event 는 이벤트를 발생시킨 특정 개체 뿐 아니라 엘리먼트 트리의 여러 리스너(listener)의 핸들러(handler)를 호출할 수 있는 이벤트 형식이다.. 구현 측면의 정의 : Routed Event 는 RoutedEvent 클래스 객체의 지원을 받으며, WPF의 이벤트 시스템에 의해 처리된다. W.. 2012. 9. 11. [WPF] LayoutTransform vs RenderTransform WPF에는 Layout Transform 과 Render Transform 의 두 가지 트랜스폼이 존재한다. 각각을 적용했을 때 다른 결과가 나타나서 둘의 차이가 뭔지 궁금해서 찾아본 결과 명료하게 정리된 포스팅이 있어 다시 정리해보려고 한다. 아래의 내용은 다음의 두 블로그를 참조했다.http://www.scottlogic.co.uk/blog/colin/2008/12/layouttransform-vs-rendertransform-whats-the-difference/ http://www.vbdotnetheaven.com/uploadfile/7b0949/rendertransform-and-layouttransform-in-wpf/ WPF에서 레이아웃을 렌더링할 때는 다음의 순서를 거친다.Measure :.. 2012. 8. 30. 이전 1 2 3 4 5 다음 반응형