본문 바로가기

Dev29

[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.
[WPF] Zoom In/Out & Rotate (줌인/줌아웃 & 회전) 이미지, 혹은 엘리먼트를 확대/축소, 회전 시키는 것은 Transform을 통해 쉽게 구현할 수 있다. WPF에는 여러 개의 Transform 들을 제공하는데, 확대/축소의 경우 ScaleTransform, 회전의 경우 RotateTransform 을 사용하여 구현한다. 간단하게, 이미지를 확대 축소, 회전 시키는 프로젝트를 만들어보자. 1. 확대 축소 시 전체 이미지를 볼 수 있도록 ScrollViewer 를 하나 만들고,2. 이미지를 하나 삽입한다.3. 확대, 축소, 회전을 위해 버튼을 3개 만들어보자 자 그럼 준비는 됐으니 Transform을 적용해보자.우리가 Transform을 적용하고자 하는 엘리먼트는 이므로, 하위에 LayoutTransform 에TransformGroup 을 하나 만들고, 그.. 2012. 8. 21.
[WPF] Custom ContentControl (컨텐트컨트롤 커스텀화) WPF 의 컨트롤들 중 ContentControl 이라는 것이 있다. Control 중에 'Content' 속성을 지닌 컨트롤을 의미한다. Button 이나 Label, Frame과 같은 컨트롤들이 'ContentControl' 에 속한다. 상황에 따라 이 ContentControl 을 커스텀화 해서 사용하고 싶은 경우가 있다. 가령 Panel 처럼 생겼지만 우측 상단에 접었다 폈다 할 수 있는 기능을 가지는 버튼을 일괄적으로 넣고 싶다거나, border, label 등으로 일괄적으로 변경을 하려고 하는 등의 경우이다. 물론 코드상에서 적용하고자 하는 부분에 모두 border, button, label 등을 추가할 수 있지만, 이를 템플릿화하여 ContentControl 로 만들어놓는다면 재사용성을 높일.. 2012. 8. 7.
[WPF] Textbox Watermark - Passwordbox ( 패스워드박스에 힌트 넣기) TextBox 에 워터마크를 삽입하는 것은 이 전의 글에서 이야기했었고, 동일한 방법으로 스타일을 만들어 Key와 TargetType 만 변경하여 PasswordBox에 적용하려 했으나 에러가 발생했다. 이유는 PasswordBox 에는 'Text' 속성이 없고 이 대신 'Password' 속성이 있지만 이 속성은 의존속성(Dependency Property) 가 아니기 때문에 트리거로 사용할 수 없다. 다시 TextBox의 예로 돌아와서 Trigger 부분을 살펴보자. 4번째 줄에 보면 'Text' 속성이 "" 일 때에 대한 조건이 있는데 해당 TextBox가 focus 되지 않고, 또한 내용이 입력되지 않았을 때 워터마크를 보여주도록 지정한다. 하지만 PasswordBox 에서는 이 'Text' 속성.. 2012. 8. 1.
[WPF] Textbox Watermark(hint) ( 텍스트박스에 힌트 넣기) 입력창, 특히 로그인 창에 회색으로 'ID를 입력하세요' 내지 'example@example.com ' 처럼 예시를 통해사용자의 입력을 돕는 기능을 흔히 볼 수 있다. 아래는 네이버 로그인 창인데, '아이디' , '비밀번호' 부분을 보면 focus 가 되면 글씨가 사라지고 입력이 없고 focus되지 않으면 나타나 입력을 돕는다. 웹에서는 태그에서 'placeholder' 속성으로 구현을 하는데, WPF 의 Textbox 에는 이 기능이 없기 때문에 직접 구현해야 한다. 1. Resource 를 통해 watermark 를 구현2. 사용하고자 하는 TextBox에 1에서 정의한 Style 을 적용 1.TextBox 에 스타일을 변경하여 watermark 를 삽입할 'Label' 하나를 추가하는 방법으로 구현.. 2012. 7. 31.
반응형