Silverlight 在XAML中创建阴影样式

Silverlight 在XAML中创建阴影样式,silverlight,xaml,coding-style,Silverlight,Xaml,Coding Style,我对一些XAML语法有点纠结,希望有人能给我一些建议。我想创建一个“Effect”类型的样式资源,其中包含一个DropShadowEffect定义,该定义可以重用,而不是总是手动设置属性。以下是我所拥有的: <Style TargetType="DropShadowEffect" x:Name="DropShadowEffectStyle"> <Setter Property="BlurRadius" Value="5" /> <Setter Propert

我对一些XAML语法有点纠结,希望有人能给我一些建议。我想创建一个“Effect”类型的样式资源,其中包含一个DropShadowEffect定义,该定义可以重用,而不是总是手动设置属性。以下是我所拥有的:

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

每次运行时都会失败,所以我显然错过了一些东西。我认为它是围绕文本块样式的“Effect”属性的,它期望的是“Effect”类型而不是“DopShadowEffect”类型。有什么想法吗?

你不能“设计”效果,因为风格是控件的属性,而效果不是控件

您真正想要做的是将效果本身放入资源字典中,并使用StaticResource引用指向它。比如:

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

太好了,谢谢Keith。可能还值得一提的是,DropShadowEffect声明必须在被引用之前出现(以防不明显!)。