본문 바로가기

wpf

NotifyCollectionChangedHelper for increasing performance Introduction Application을 개발할때 목록에 항목이 추가되거나, 제거 되었을때와 같은 동적인 변경내용을 수신기에 알리기 위해 일반적으로 목록객체에 INotifyCollectionChanged를 상속받아 구현하거나 INotifyCollectionChanged가 구현된 ObservableCollection등을 사용합니다. 동적인 목록의 변경에 대하여 즉각 반응하기 때문에 매우 유용하게 사용될 수 있지만, 많은 양의 목록이 추가/제거 될경우 매번 목록의 변동이 있을대마다 CollectionChanged이벤트가 발생하기 때문에 퍼포먼스에 크게 영향을 미칠 수 있습니다. 이번시간에는 많은 양의 아이템을 INotifyCollectionChanged가 구현된 목록에 추가/제거할때 Collection.. 더보기
Runtime DynamicResource for DependencyObject Level Introduction WPF Application을 개발할때 동적인 리소스를 활용하기 위해 DynamicResource를 이용합니다. 동일한 내용의 리소스를 메모리에 여러번 올리지 않기 때문에, 메모리 효율이나 퍼모먼스면에서 좋은 효과를 낼수 있습니다. 하지만, DynamicResource의 경우 XAML상에서 한번 지정하면(혹은 지정하지 않으면) 런타임상에서 지정이 불가능하기 때문에 당혹스러울 때가 많습니다. MSDN에서는 이러한 상황을 위해 FrameworkElement수준에서 SetResourceReference를 제공하고 있지만, FrameworkElement가 아닌 DependencyObject 수준에서는 역시나 제어가 불가능 하기 때문에 완전한 해결방법이라고는 할 수 없습니다. 대표적인 예로.. 더보기
Markup Extension for CommandBinding with RoutedEvent Introduction MVVM 패턴등을 이용해 Application을 개발할때 View에서 호출되는 RoutedEvent를 처리하는데 있어 몇가지 이슈가 발생하게 됩니다. 일반적인 방법으로 RoutedEvent를 Command로 연결하기 위해서는 View와 ViewModel간의 종속적인관계가 유지 View와 ViewModel의 분리를 원칙으로하는 MVVM패턴을 이용할 떄 이 방법은 좋은 방법은 아닙니다. 이번시간에 소개할 내용은 이러한 MVVM 패턴을 이용해 RoutedEvent를 처리해야 하는 상황에서 View와 ViewModel간의 연결 없이 RoutedEvent를 Command로 연결할 수 있는 방법에 대해 소개합니다. CommandBinding MarkupExtension 이번시간에는 Marku.. 더보기
Create Simple WPF ColorPicker Introduction 이번시간에는 WPF를 이용해 색을 선택할 수 있는 간단한 ColorPicker를 제작하는 방법에 대해 소개합니다. ColorPicker는 WPF4.0에서 기본 컨트롤로 추가되었지만, WPF 3.0을 사용하시는 분이나 직접 ColorPicker를 제작해야하는 분들께 도움이 됬으면 하는 바램입니다. 위 동영상은 이번시간에 구현하는 ColorPicker 데모 동영상입니다. Color Picker Color Model Color Picker를 개발하기 앞서, ColorPicker의 Color Model에 대해 살펴보겠습니다. 위그림은 Expression Blend에서 제공하는 ColorPicker로 HSB(Hue, Saturation, Brightness) ColorModel을 이용하고 .. 더보기
WPF UI 테마 샘플 제작 이야기 안녕하세요. 디자이너 채은석입니다. 요즘은 개발을 잘 모르는 디자이너와 디자인을 하기 힘든 개발자를 위해 보다 손쉽게 WPF UI 테마를 제작할 수 있도록 작업을 진행하고 있는데요, 일단 WPF에서 제공하는 기본적인 컨트롤들이 어떤 것이 있는지 파악하기 위한 작업부터 시작해 보았습니다. 그리고 그 후 GUI를 제작했는데 가장 보편적이고 무난한 Glossy스타일로 잡아 보았습니다. * 아직은 본인이 익스프레션 블렌드에 익숙하지 못하기 때문에 먼저 포토샵으로 분위기를 잡아 보았습니다. 기본적으로 Normal, MouseOver, Press, Disable에 대한 정의를 내리고 개발자에게 넘겨 실제 WPF로 제작을 해본 결과는 다음과 같습니다. 기본적으로 Black이 메인으로 들어간 테마인데 손쉽게 여러 다른.. 더보기