IT박스

코드에서 동적 리소스 스타일을 할당하는 방법은 무엇입니까?

itboxs 2021. 1. 9. 09:39
반응형

코드에서 동적 리소스 스타일을 할당하는 방법은 무엇입니까?


XAML에서 이와 동등한 코드를 생성하고 싶습니다.

<TextBlock
Text="Title:"
Width="{Binding FormLabelColumnWidth}"
Style="{DynamicResource FormLabelStyle}"/>

텍스트와 너비를 할 수 있지만 동적 리소스를 스타일에 할당하려면 어떻게해야합니까?

TextBlock tb = new TextBlock();
            tb.Text = "Title:";
            tb.Width = FormLabelColumnWidth;
            tb.Style = ???

당신은 시도 할 수 있습니다:

tb.Style = (Style)FindResource("FormLabelStyle");

즐겨!


True DynamicResource 동작을 원하면 FrameworkElement.SetResourceReference를 사용해야합니다 ( 예 : 리소스 변경시 대상 요소 업데이트).

tb.SetResourceReference(Control.StyleProperty, "FormLabelStyle")

이것은 작동합니다.

tb.SetValue(Control.StyleProperty, "FormLabelStyle");

원래의 질문은 어떻게 동적으로 만드는지였습니다. 즉, 리소스가 변경되면 컨트롤이 업데이트됩니다. 위의 베스트 답변은 SetResourceReference를 사용했습니다. Xamarin 프레임 워크의 경우 사용할 수 없지만 SetDynamicResource는 원래 포스터가 요청한대로 정확히 수행합니다. 간단한 예

        Label title = new Label();
        title.Text = "Title";
        title.SetDynamicResource(Label.TextColorProperty, "textColor");
        title.SetDynamicResource(Label.BackgroundColorProperty, "backgroundColor");

지금 전화 :

        App.Current.Resources["textColor"] = Color.AliceBlue;
        App.Current.Resources["backgroundColor"] = Color.BlueViolet;

이러한 방식으로 리소스를 사용하는 모든 컨트롤에 대한 속성이 변경되도록합니다. 이것은 모든 속성에서 작동합니다.

참조 URL : https://stackoverflow.com/questions/1754615/how-to-assign-a-dynamic-resource-style-in-code

반응형