developer tip

코드에서 WPF 레이블의 Style 속성을 설정 하시겠습니까?

optionbox 2020. 10. 26. 07:54
반응형

코드에서 WPF 레이블의 Style 속성을 설정 하시겠습니까?


App.xaml에는 다음 코드가 있습니다.

<Application.Resources>
    <Style x:Key="LabelTemplate" TargetType="{x:Type Label}">
        <Setter Property="Height" Value="53" />
        <Setter Property="Width" Value="130" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="Margin" Value="99,71,0,0" />
        <Setter Property="VerticalAlignment" Value= "Top" />
        <Setter Property="Foreground" Value="#FFE75959" />
        <Setter Property="FontFamily" Value="Calibri" />
        <Setter Property="FontSize" Value="40" />
    </Style>
</Application.Resources>

이것은 내 레이블에 대한 일반 템플릿을 제공하기위한 것입니다.

기본 XAML 코드에는 다음 코드 줄이 있습니다.

<Label Content="Movies" Style="{StaticResource LabelTemplate}" Name="label1" />

그러나 코드를 통해 Style 속성을 초기화하고 싶습니다. 나는 시도했다 :

label1.Style = new Style("{StaticResource LabelTemplate}");

label1.Style = "{StaticResource LabelTemplate}";

두 솔루션 모두 유효하지 않습니다.

어떤 도움을 주시면 감사하겠습니다 :).


코드에서 스타일을 얻으려는 곳은 어디입니까? 코드 뒤에?

다음과 같이 작성해야합니다.

코드 숨김에있는 경우 :

Style style = this.FindResource("LabelTemplate") as Style;
label1.Style = style;

당신이 다른 곳에 있다면

Style style = Application.Current.FindResource("LabelTemplate") as Style;
label1.Style = style;

하단 참고 :Style 키워드로 a 이름을 지정하지 마십시오 .Template 결국 a Style와 a를 혼동하게 Template되며 두 가지 다른 개념이므로 사용하지 마십시오.


null 스타일 결과를 확인하지 않으면 슬프게 될 것입니다 ... ... if (style! = null) this.Style = style;


오래된 질문 일 수도 있지만 W10을 시도하는 경우 UWP 앱은 각 개체의 리소스 컬렉션 또는 Application 개체의 리소스 컬렉션을 사용해야합니다.

KeyValuePair<object,object> styl = this.Resources
    .Where(x => x.Key.ToString() == "MyStyleTemplateName")
    .FirstOrDefault();
if (styl.Value != null)
    Style MyStyle = (Style)styl.Value;

어디 MyStyleTemplateName은 의 자원으로 정의해야합니다

참고 URL : https://stackoverflow.com/questions/10686917/setting-the-style-property-of-a-wpf-label-in-code

반응형