본문 바로가기

실버라이트

(35)
ScrollViewer 에 ScrollToTop, ScrollToBottom, ScrollToLeftEnd, ScrollToRightEnd 구현하기 WinForm에서는 TextBox.ScrollToCaret() 같은 메소드를 이용하여 TextBox에 AppendText("텍스트") 된 내용을 현재 캐럿 위치까지 스크롤이 가능하게 하고, WPF에서는 ScrollViewer.ScrollToTop, ScrollToBottom 등을 이용하여 Scroll의 위치를 컨텐츠의 상,하,좌,우로 이동 할 수 있습니다. 헌데, Silverlight에서는 ScrollToCaret도, ScrollToTop, ScrollToBottom 등도 없기 때문에 이와 같은 기능을 직접 구현 해 줘야 합니다. 그래서, 확장 메서드를 이용해서 ScrollViewer에 직접 ScrollToTop, ScrollToBottom, ScrollToLeftEnd, ScrollToRightEnd ..
MultiScaleImage의 SubImages 배치변경 Deepzoom에서도 SubImages의 배치를 변경하는 기능을 구현 해 보려고 합니다. Deepzoom 을 원하는 만큼 제어할 수 있도록 하려면 ViewportWidth, ViewportOrigin, AspectRatio, Logical Point, Element Point 에 관한 이해를 먼저 하셔야 합니다. 도움이 되실 지 모르겠지만, 제가 포스팅 했던 글을 참조 해 보시기 바랍니다. 2009/06/10 - [Image/Deepzoom] - Coposition에서의 ViewPort, AspectRatio, 좌표계, ElementalPoint, LogicalPoint 그럼 기능 구현을 해보겠습니다. Deepzoom Composer를 통해 이미지 피라미드를 구성하게 되면, Export 된 폴더에 이미지..
Make a Deepzoom Solution Deepzoom 에 관한 기초 지식을 기반으로 간략한 Test 솔루션을 만들어 보겠습니다. Test 솔루션에서 구현 될 기능 리스트 입니다. 1. Mouse Left Button Click 시 Deepzoom Image 확대. 2. Shift + Mouse Left Button Click 시 Deepzoom Image 축소. 3. MouseWheelHelper를 사용한 Wheel 지원 4. Pan 기능(Mouse Drag를 통한 Deepzoom Image 이동). Deepzoom Test Solution 을 하나 생성합니다.(Web Project 도 함께 추가합니다.) Deepzoom Composer 를 이용한 Deepzoom Image 피라미드를 ClientBin 폴더에 복사합니다. Deepzoom C..
Behavior 만들기 Silverlight 3 에서는 Behavior 를 지원합니다. Behavior란 사전적인 해석에서 알 수 있듯이, 동작을 뜻합니다. 이 동작이란 것은, Dependency Object의 동작이 될 수도 있고, FrameworkElement의 Event에 대한 Trigger가 될 수 있습니다. Behavior를 Silverlight 3 에서 구현하는 방법 입니다. 1. Dependency object 의 Behavior 정의 우선, Dependency object의 Behavior를 정의 하기 위해서는, Program Files > Microsoft Expression > Bledn 3 Preview > Libraries > Silverlight > Microsoft.Expression.Interativ..
Element to Element Binding Silverlight 3 에서는 UIElement에서 다른 UIElment의 Property 값을 Binding 할 수 있는 기능이 추가 됐습니다. (WPF에서는 원래 사용되고 있었다고 합니다.) Element Binding Element Binding은 다음과 같은 구문으로 사용하실 수 있습니다. DependencyProperty = "{Binding Value, ElementName=UIElement명}" Slider의 Value 값을 DependencyProperty에 Binding 하게 됩니다. Silverlight 2에서는 Element의 Property 값을 다른 Element에서 참조하여 사용하고자 할 때, 비하인드 코드에서 Property값을 참조할 수 있도록 처리를 해 줘야 했습니다. 사..
Data Binding 데이터 바인팅은 User Interface(UI)와 Data Source를 연결할 수 있는 방법입니다. 런타임에서 Binding UI에 Data source를 연결하기 위해서는 Binding 클래스의 인스턴스를 생성해야 합니다. Binding 클래스의 인스턴스를 생성하고, Data source, Binding Mode를 설정 한 뒤, UIElement에 (정확히는 FrameworkElement) SetBinding 함수를 사용하여 연결 될 Property와 Binding 인스턴스를 넘겨줍니다. 이때, FrameworkElement 내 연결 될 Property는 반드시 DependancyProperty여야 합니다. DateTime.Now; Binding bind = new Binding("Now"); bi..
ControlTemplate 정의하기 Control의 Style을 바꾸기 위해선 Style을 Resource로 정의하고 공유하면 되지만, Style을 바꾸는 것 이상으로 Control의 모양을 사용자가 원하는 모양으로 바꾸고 싶을 때, ControlTemplate을 사용합니다. 실버라이트의 모든 Control 은 Template속성에 ControlTemplate을 적용할 수 있습니다. ControlTemplate 정의 Button control을 추가하면, 그림과 같은 형태의 버튼이 삽입 됩니다. 버튼의 모양을 둥글게 변형하거나, 별모양을 만들고 싶다거나 하는 경우, Button.Template 속성에 ControlTemplate를 정의하면 됩니다. 코드에서 Button.Template 속성에 ControlTemplate를 지정하면 Butt..
Resource에서 Style을 범용적으로 사용 Element 의 Style을 지정하는 방법을 알아 봤지만, 모든 Element에 Style을 지정 해 Element의 형태를 지정하는 것은 비효율적이며 손이 많이 가는게 사실입니다. 또한, 유지보수 차원에서도 여간 쉬운 일이 아닙니다. (일례로, Page내 TextBox 스타일이 일률적으로 변경 된다거 등의 작업을 처리하기 위해서는 Page내 TextBox의 Style을 수정해야 하기 때문이죠) 예를 들어, 다음과 같은 사용자 로그인 페이지를 구현한다고 하면, 위 코드에서 처럼, Login ID, E-Mail Address, Phone Number, Memo TextBlock이 Style이 모두 같기 때문에 4개의 TextBlock 모두 같은 코드를 반복해서 타이핑 할 수 밖에 없습니다. 마찬가지로, ..