본문 바로가기

Development

ScrollViewer Zoom And Panning Behavior Introduction 일반적으로 Image Viewer 등과 같이 화면에 출력해야할 내용이 화면크기보다 클 경우 ScrollViewer를 이용해 내용을 스크롤할 수 있도록 구현을 하는데요, 이번시간에는 화면을 스크롤하기 위해서 스크롤바를 조작하지 않고 간단한 마우스조작으로 컨텐츠를 직접 드래그하는 방식으로 View를 조절하고 확대 축소할 수 있는 기능을 구현해보았습니다. 아래는 이번시간에 구현한 결과물 영상입니다. Create ZoomAndPanning Behavior Zoom 또는 Panning의 경우 자주 사용될 수 있는 기능이기 때문에 재사용을 용이하게 하기 위해서 Behavior의 형태로 작성했습니다. ZoomAndPanning Behavior의 기본적인 구성은 와래와 같습니다. public c.. 더보기
ListBox(ListView) DeferredScrolling Preview Introduction ListBox나 Listview와 같이 목록형으로 데이터를 출력하는 컨트롤에서 많은 양의 데이터를 출력할경우, 스크롤 바를 조작할때 스크롤 속도가 매우 느려지는 현상을 발생합니다. 속도가 느려지는 가장큰 원인은 스크롤하는 도중에 매번 화면에 출력될 View가 업데이트되면서 퍼포먼스에 영향을 주게 되는것인데, 이를 해결하기 위한 간단한 방법으로 ScrollViewer의 IsDeferredScrollingEnabled 속성을 이용해 스크롤이 모두 끝났을때 View를 갱신하는 방법이 있습니다. 하지만 IsDeferredScrollingEnabled을 사용 할 경우 스크롤 동작이 완료될때까지 뷰가 갱신되지 않기때문에 디테일한 탐색이 불가능하기 때문에 오히려 더 불편한 상황이 발생 할 수도.. 더보기
Control(FrameworkElement)을 Dialog로 띄우기 Introduction Control로 만든 내용을 Dialog로 띄우고 싶은 경우가 있습니다. 경우에 따라 이 Control이 화면에 일부분이 될 경우도 있고 Dialog로 떠야할 경우도 있을 때,같은 xaml의 코드를 Window로 구현할 수도 없고, 난감하지요. 또, 이런 경우가 자주 생긴다면 매번 Window를 생성해서 띄우는 것도 번거로운 일입니다. 이럴 때 Control이 그냥 Window처럼 ShowDiaolg하면 팍! 하고 떴음 좋겠죠? 이번 시간에는 Extention Method를 이용한 Control을 Dialog 형태로 출력하는 방법에 대해 소개합니다. [귀여운 곰돌이 팝업입니다.] Extention Method를 이용한 Control의 ShowDialog. 위의 사진과 같이 Cont.. 더보기
사용자 지정 Attached Property의 이해 안녕하세요. 이번 포스팅에서는 사용자 지정 Attached Property에 대해 이해와, 예제를 다룹니다. 1. 다른건 다 기본 내용을 쓰고싶은데, 이거 하나만 추가하고싶어,, 예를 들어서, ListBox에서 여러개를 선택가능하게 하되, 최대갯수를 제한하고 싶은 경우를 봅시다. 기본의 ListBox에서는 MultiSelect를 할수있게/없게 하는 기능은 있어도, 최대 갯수를 지정할 수는 없습니다. 이를 구현하는데 쉽게 생각할 수 있는 방법은 상속입니다. 부모의 기능은 그대로 사용하고 싶은데, 내것 하나만 추가됬으면 하는 경우 니까요 public class MaxSelectionListBox : ListBox // 1. 리스트 박스를 상속받습니다. { public int MaxSelectionCount .. 더보기
Create Tile Image in Silverlight(or Siverlight for WP7) Introduction WPF의 경우 이미지나 드로잉객체를 바둑판형식으로 출력하기 위한 TileBrush를 제공하고있지만 Silverlight에서는 TileMode를 지원하고 있지 않아 Shader를 이용하거나 여러개의 객체를 생성하여 바둑판형식의 출력을 구현해 사용했습니다. 하지만 Windows Phone7과 같이 Shader등을 사용할 수 없는 제약 적인 환경에서는 다른 방법으로 구현해야 합니다. 여러개의 객체를 바둑판식으로 배열하는 방법에 대해 생각해 볼 수 있겠지만, 이는(동적으로 생성했다 할지라도) 렌더링에 필요한 모든 과정(레이아웃,렌더링 등)의 연산이 매번 필요하기 퍼포먼스나 관리 측면에서 효율적이라 하긴 어렵습니다. 이번시간에는 이와같은 환경에서 동적으로 Tile Image를 생성하여 바둑.. 더보기