Создание стиля тени в XAML
Я немного борюсь с синтаксисом 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". Любые идеи?
Ответы
Ответ 1
Вы не можете "стилизовать" эффект, потому что Style является свойством 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>