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


82

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}";

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

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


UserControl의 코드 숨김에서이 ​​작업을 수행 할 이유가 있습니까? 더 우아한 솔루션이있을 수 있습니다.
csteinmueller

답변:


183

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

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

코드 숨김에있는 경우 :

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되며 두 가지 개념이 다르므로 사용하지 마십시오.


"Application"대신 "App".Current.FindResource ()를 사용하는 것으로 나타났습니다.
alansiqueira27 2014-06-29

FindResource를 찾을 수 없음
Welsh King

수정 사항을 찾았습니다. stackoverflow.com/questions/17704969/…
Welsh King

많은 도움이됩니다. 감사합니다 ^^
Dôn Kayt

3

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


10
null이면 울거나 man-up하여 문제를 해결할 수 있습니다.
Allen

0

오래된 질문 일 수도 있지만 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은 의 자원으로 정의해야합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.