WPF 문자열 바인딩을 통한 DynamicResource 방법은?

안녕하세요. :smile:

WPF에서 문자열 바인딩을 통한 DynamicResource 사용 방법이 있을까요?

이런식으로 하고 싶은데요!

<TextBlock Text="{DynamicResource ResourceKey={Binding Name}}"/>

동작할줄 알았는데 안됐습니다.

그래서 DynamicResource 클래스를 확인해봤는데요.

public DynamicResourceExtension : MarkupExtension
{
    public object ResourceKey { get; set; }
}

ResourceKey 속성이 object 타입이기 때문에 Binding은 불가능한 것 같습니다.


또 임시방편으로 IValueConverter를 사용해봤는데요.
이건 StaticResource처럼 최초에는 적용되지만 DynamicResource처럼 동작하진 않았습니다.

public class ResourceNameConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {        
        return Application.Current.FindResource(value);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

혹시 방법이 있을까요?

읽어주셔서 감사합니다. :smile:

2개의 좋아요

아래 글이 도움이 될 수 있지 않을까요?

3개의 좋아요

@dimohy 앗 감사합니다!! 해결했습니다. :laughing:

<RadioButton Content="{convt:ResourceBinding Name}"/>

MarkupExtension, Binding, DependencyProperty, IMultiValueConverter까지

총출동이네요.

소스코드 정리되면 간단하게 리뷰도 남겨놓겠습니다.

감사합니다. :smile:

4개의 좋아요