본문 바로가기

Development

ListBox SelectedItems Binding for MVVM Introduction MVVM패턴을 사용할 때 일반적으로 ListBox에 목록을 바인딩 하기 위해 ObservableCollection를 ItemSource에 바인딩하는 방법을 사용합니다. ObservableCollection의 경우 INotifyCollectionChanged를 상속받아 구현되었기 때문에 목록이 변경되었을때 마다 ListBox에 변경을 알려 ListBox의 View와 ObservableCollection의 목록이 동일하게 유지될 수 있도록 돕습니다. 그리고 ListBox의 현재 선택된 항목을 ViewModel에서 제어하기 위해 ListBox의 SelectedItem속성에 ViewModel의 속성을 TwoWay로 바인딩합니다. 하나의 선택된 항목을 관리하기 위해서 SelectedItem.. 더보기
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 수준에서는 역시나 제어가 불가능 하기 때문에 완전한 해결방법이라고는 할 수 없습니다. 대표적인 예로.. 더보기
Web Application Packaging For WPI(Windows Platform Installer) Introduction 지난 3월 진행한 TechDays 2010 Spring의 웹플랫폼 트랙의 "PHP on Windows - WPI를 이용한 웹어플리케이션 설치와 패키징" 세션을 통해 WPI에 Web Application을 등록하기 위한 기반작업인 Application Packaging 에 대해 소개해 드린바 있습니다. 이메일로 이와 관련된 문의가 많아 다시한번 정리하는 차원에서 Application Packaging과 관련된 간략한 소개와 팁을 제공합니다. WPI(Web Platform Installer) 일단 WPI 즉 Web Platform Installer는 사용자가 웹 플랫폼 환경을 구축하는데 보다 쉽게 구성할 수 있도록 돕는 도구로서 Microsoft Web Application Galle.. 더보기
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.. 더보기