본문 바로가기

Development/WPF

WPF StaticMethod Markup Extension

 

Introduction

WPF에서는 효율적인 XAML개발을 위해 여러가지 MarkupExtension을 제공합니다. Binding이나 StaticResource, DynamicResource가 대표적인 인데요. 기본적으로 제공되지 않는 기능의 경우 직접 MarkupExtension을 개발 할 수도 있습니다. 이번시간에는 XAML단에서 Static Method에 접근이 필요한 경우를 위해 StaticMethod MarkupExtension을 구현하는 방법에 대해 소개합니다.

Create StaticMethodExtension


StaticMethodExtension의 구조는 WPF에서 제공되는 StaticExtension과 유사합니다. 다른점은 Member에 해당하는 부분이 Method로 대체되고 Reflection을 통해 Static Member에 접근하는 대신 Static Method에 접근하는 점 입니다. IXamlTypeResolver와 IProvideValueTarget를 통해 사용자가 입력한 Path에 대한 MethodInfo를 가져오고 Delegate.CreateDelegate를 통해 StaticMethod의 Delegate를 제공해주는 방식으로 구성됩니다.

아래와 같이 C#코드에 Static메서드를 정의한 뒤

XAML코드에서는 아래와 MarkupExtension을 사용할 수 있습니다.

이상이며, 기타 궁금하신 점있으시면 댓글달아주시면 답변드리겠습니다.