Dev29 [WPF] Create Custom Control (커스텀 컨트롤 만들기) - 행열 선택기(RowColumn Selector) [4] 이번 포스팅에서는 1. 선택된 행, 열의 갯수를 지정하는 의존속성(Dependency Property) 생성2. 작은 사각형(CustomRectangle) 에 마우스 이벤트 구현 을 진행하도록 하겠다. ---------------------------------------------------1. 선택된 행, 열의 갯수를 지정하는 의존속성(Dependency Property) 생성 의존속성은 이전 포스팅에서도 다루었지만 쉽게 생성하여 일반 전역변수처럼 사용할 수 있다. 다음과 같이 행(Row), 열(Column) 에 해당하는 의존속성을 생성하도록 한다. 여기에 덧붙여, 앞의 과정에서 사각형들을 생성할 때 사용했던 변수들(MaxRows, MaxColumns, RectangleSize, ...) 등도 의존속.. 2012. 12. 11. [WPF] Create Custom Control (커스텀 컨트롤 만들기) - 행열 선택기(RowColumn Selector) [3] 이번 포스팅에서는 1. 팝업창 내부의 구조를 구현하고2. 작은 사각형들을 동적으로 생성한다. ----------------------------------------------------------1. 팝업창 내부의 구조 이제 팝업창 내부에 행, 열을 선택하는 화면을 구현해보자. 팝업창 상단에는 현재 선택된 행, 열의 갯수가 보여지도록 TextBlock 을 넣고하단에는 사각형들을 배치할 'UniformGrid'를 하나 넣어준다. 여기까지 넣으면 간단한 구조는 다음과 같다 ----------------------------------------------------------2. 작은 사각형들 생성 작은 사각형들을 생성하여 위에서 생성한 UniformGrid에 차곡차곡 넣어주어야 한다. 간단한 과정은 다음.. 2012. 12. 11. [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. 이전 1 2 3 4 5 다음 반응형