【问题标题】:Creating a drop shadow style in XAML在 XAML 中创建投影样式
【发布时间】:2010-11-19 12:57:22
【问题描述】:

我在一些 XAML 语法方面有点挣扎,希望有人能提供建议。我想创建一个“效果”类型的样式资源,其中包含一个可以重用的 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>

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

【问题讨论】:

    标签: silverlight xaml coding-style


    【解决方案1】:

    您不能“设置”效果,因为 Style 是 Control 的属性,而效果不是 Control。

    您真正想做的是将效果本身放入资源字典并使用 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>
    

    【讨论】:

    • 完美,谢谢基思。可能还值得一提的是 DropShadowEffect 声明必须出现在它被引用之前(以防这不是立即显而易见的!)。
    猜你喜欢
    • 2011-09-15
    • 2015-02-28
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多