Kodda bir WPF Etiketinin Stil özelliğini ayarlama?


82

App.xaml'de aşağıdaki koda sahibim:

<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>

Bu, etiketlerim için genel bir şablon sağlamak içindir.

Ana XAML kodunda, aşağıdaki kod satırına sahibim:

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

Ancak, Style özelliğini kod aracılığıyla başlatmak istiyorum. Denedim:

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

ve

label1.Style = "{StaticResource LabelTemplate}";

Her iki çözüm de geçerli değildi.

Herhangi bir yardım memnuniyetle karşılanacaktır :).


Bunu UserControl'ün kodundan yapmak için herhangi bir neden var mı? Belki daha şık çözümler vardır.
csteinmueller

Yanıtlar:


184

Stili nerede kodda almaya çalışıyorsun? Arkasındaki kod mu?

Bunu yazmalısın:

Arka planda kodlama kullanıyorsanız:

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

Eğer başka bir yerdeysen

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

Alt not: a Styleanahtar kelimesini adlandırmayın Template, sonunda a Styleve a'nın kafasını karıştırırsınız ve Templatebunlar iki farklı kavram olduğundan yapmamalısınız.


"Uygulama" yerine "App" .Current.FindResource () kullanarak buldum.
alansiqueira27

FindResource not found
Welsh King


Bana çok yardımcı oluyor. Teşekkür ederim ^^
Dôn Kayt

3

Lütfen boş stil sonucunu kontrol edin yoksa üzülürsünüz ... ... if (stil! = Null) this.Style = stil;


10
Boş olduğunda, ağlayabilir veya düzeltebilir ve sorunu düzeltebilirsiniz.
Allen

0

Belki eski bir soru, ancak W10'u deniyorsanız UWP uygulaması, her nesnenin kaynak koleksiyonunu veya Uygulama nesnesinin kaynak koleksiyonunu kullanmalıdır

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

Nerede MyStyleTemplateName bir kaynak olarak tanımlanması gerekir bu

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.