본문 바로가기

MarkupExtension

WPF Method Binding Extension for MVVM Introduction WPF를 이용해 MVVM패턴으로 개발할때 데이터는 DataBinding을 사용자 입력은 Command를 사용해 View와 ViewModel을 느슨하게 연결합니다. 이것만으로도 충분히 디자인 코드와 로직 코드를 효과적으로 나눌 수 있기 때문에 많이 사용되고 있지만 Command로는 처리하기 까다롭거나 Command를 제공하지 않고 이벤트로만 제공되는 기능을 처리할 때(ex. MouseEvent, SelectionEvent 등)는 View와 ViewModel의 경계가 모호해져 완벽한 분리를 하기가 어렵습니다. (Trigger와 Action을 이용해 일부 EventTrigger와 InvokeCommandAction을 통해 Event를 Command로 전달 할 수 있지만, 각 Event에.. 더보기
WPF StaticMethod Markup Extension Introduction WPF에서는 효율적인 XAML개발을 위해 여러가지 MarkupExtension을 제공합니다. Binding이나 StaticResource, DynamicResource가 대표적인 인데요. 기본적으로 제공되지 않는 기능의 경우 직접 MarkupExtension을 개발 할 수도 있습니다. 이번시간에는 XAML단에서 Static Method에 접근이 필요한 경우를 위해 StaticMethod MarkupExtension을 구현하는 방법에 대해 소개합니다. Create StaticMethodExtension public class StaticMethodExtension : MarkupExtension { public string Method { get; set; } public Stati.. 더보기
ValueSelector MarkupExtension Introduction WPF에서 Binding결과값을 다른 값으로 변환하기 위해 Converter를 사용합니다. 일반적으로 Converter를 구현하기 위해 개발자는 IValueConverter를 상속받은 객체를 구현하고 리소스로 등록하여 사용합니다. 아래 코드는 ValueConverter를 이용해 Slider의 Value에 따라 TextBlock의 FontSize를 변환하는 샘플 코드입니다. 그런데 필요에 따라 Converter를 매번 구현하게 되면 필요 이상으로 Converter를 위한 Type 이 너무 많아지는 상황이 발생합니다. 이렇게 되면 Converter의 경우 XAML코드가 아니기 때문에 관리상으로도 어려움을 격게 됩니다. 이번시간에는 단순한 값 변환을 위해 ValueConverter를 이.. 더보기