코드에서 동적 리소스 스타일을 할당하려면 어떻게 해야 합니까?
XAML에서 이와 동등한 것을 코드로 제작하고 싶다.
<TextBlock
Text="Title:"
Width="{Binding FormLabelColumnWidth}"
Style="{DynamicResource FormLabelStyle}"/>
텍스트와 너비는 할 수 있지만 동적 리소스를 스타일에 할당하려면 어떻게 해야 합니까?
TextBlock tb = new TextBlock();
tb.Text = "Title:";
tb.Width = FormLabelColumnWidth;
tb.Style = ???
FrameworkElement를 사용해야 합니다.진정한 DynamicResource 동작을 원하는 경우 SetResourceReference(리소스 변경 시 타깃 요소 업데이트)를 설정합니다.
tb.SetResourceReference(Control.StyleProperty, "FormLabelStyle")
다음 작업을 수행할 수 있습니다.
tb.Style = (Style)FindResource("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;
이 방법으로 리소스를 사용하는 모든 컨트롤의 속성이 변경됩니다.모든 속성에서 사용할 수 있습니다.
이 조작은 유효합니다.
tb.SetValue(Control.StyleProperty, "FormLabelStyle");
Application.Current.Resources.TryGetValue("ResourceKey", out var value)
언급URL : https://stackoverflow.com/questions/1754615/how-to-assign-a-dynamic-resource-style-in-code
'programing' 카테고리의 다른 글
테이블에서 필터 지우기 (0) | 2023.04.15 |
---|---|
Swift에서 Arg 수가 가변인 함수에 배열 전달 (0) | 2023.04.15 |
Javascript의 PMT 함수 (0) | 2023.04.15 |
Apache POI의 컬럼 크기를 자동화하는 방법은 무엇입니까? (0) | 2023.04.15 |
WPF 팝업 UI가 검은색으로 표시됨 (0) | 2023.04.15 |