2009-08-14 23 views
14

bir gölge stili yaratmak. Özelliklerin her zaman manuel olarak ayarlanması yerine yeniden kullanılabilen bir DropShadowEffect tanımı içeren bir "Efekt" tipi stil kaynağı oluşturmak istiyorum. İşte ne var:ben birileri tavsiyelerde bulunabilir umut bazı XAML sözdizimi ile biraz mücadele ediyorum XAML

<Style TargetType="DropShadowEffect" x:Name="DropShadowEffectStyle"> 
    <Setter Property="BlurRadius" Value="5" /> 
    <Setter Property="Direction" Value="315" /> 
    <Setter Property="ShadowDepth" Value="2" /> 
    <Setter Property="Opacity" Value="0.5" /> 
</Style> 

<Style TargetType="TextBlock" x:Name="PageTabLabelStyle"> 
    <Setter Property="FontSize" Value="16" /> 
    <Setter Property="FontFamily" Value="Arial" /> 
    <Setter Property="Foreground" Value="#EFEFEF" /> 
    <Setter Property="VerticalAlignment" Value="Center" /> 
    <Setter Property="Margin" Value="0, 10, 0, 10" /> 
    <Setter Property="Effect" Value="{StaticResource DropShadowEffectStyle}" /> 
</Style> 

Bu demek ki özlüyorum şey çalışan dismally her zaman başarısız olur. “DopShadowEffect” türünden ziyade “Efekt” türünü bekleyen metin bloğu stilinin “Efekt” özelliği etrafında olduğunu düşünüyorum. Herhangi bir fikir?

cevap

28

yapamazsınız "tarzı" bir efekt, Stil Kontrolü bir özelliktir ve bir efekt Denetim olmadığı için. gerçekten yapmak istediğim şey

kaynak sözlüğüne etkisi kendisini koymak ve buna işaret etmek bir StaticResource başvuru kullanmanız edilir.

<UserControl.Resources> 
    <DropShadowEffect x:Key="dropShadow" BlurRadius="25" Direction="315" /> 
    <Style TargetType="TextBlock" x:Name="PageTabLabelStyle"> 
     <Setter Property="FontSize" Value="16" /> 
     <Setter Property="FontFamily" Value="Arial" /> 
     <Setter Property="Foreground" Value="#EFEFEF" /> 
     <Setter Property="VerticalAlignment" Value="Center" /> 
     <Setter Property="Margin" Value="0, 10, 0, 10" /> 
     <Setter Property="Effect" Value="{StaticResource dropShadow}" /> 
    </Style> 
</UserControl.Resources> 
+0

Mükemmel, teşekkür Keith: gibi bir şey. Muhtemelen ayrıca DropShadowEffect bildirimini belirtmeye değmez, referans alınmadan önce görünmelidir (hemen açık olmadığı takdirde!). –

+0

Bunu yapmanın başka bir yolunu buldum [here] (http://stackoverflow.com/a/5157480/3029422) – Ionut