2013-12-20 2 views
0

В этом вопросе говорится все. Я не могу понять это. Я попытался добавить зеркальный текстовый элемент, но у меня есть триггер, который изменяет шрифт, когда мышь находится над элементом, который не запускается из-за того, что главный элемент находится сверху. Обычные обходные пути для размытия не работают, когда это сам текст, который вы хотите удалить.Как добавить не-размытие тени на текстовый блок

Я думаю о взломе этого и добавлении двух теневых блоков, которые отображают видимость. Но я не уверен, как переключить эту видимость, поскольку я не могу использовать TargetName или DataTrigger, поскольку он основывается на другом элементе, поэтому он никогда не будет запускаться.

Per Request (Shadow преувеличена, так что можно увидеть) enter image description here:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:models="clr-namespace:DesktopDictation.Spelling.Models"> 
    <ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="../FontStyles/TextBlock.DefaultFont.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
    <DropShadowEffect x:Key="BlackShadow" ShadowDepth="10" Direction="270" Color="Black" Opacity="75" BlurRadius="2"/> 
    <Style x:Key="Spelling.TextGlyph" TargetType="TextBlock" BasedOn="{StaticResource TextBlock.DefaultFontFamilyStyle}"> 
    <Setter Property="FontWeight" Value="Normal"/> 
    <Setter Property="FontSize" Value="12"/> 
    <Setter Property="Foreground" Value="#FFFFFF"/> 
    <!--<Setter Property="Effect" Value="{StaticResource BlackShadow}"/>--> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
     <Setter Property="Foreground" Value="#75BAFF"/> 
     <Setter Property="FontWeight" Value="SemiBold"/> 
     <Setter Property="FontSize" Value="22"/> 
     </Trigger> 
    </Style.Triggers> 
    </Style> 
    <Style x:Key="GlyphList" TargetType="ItemsControl"> 
    <Setter Property="ItemsPanel"> 
     <Setter.Value> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"/> 
     </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="ItemTemplate"> 
     <Setter.Value> 
     <DataTemplate DataType="models:SpellingGlyph"> 
      <Grid Name="MainGrid"> 
      <TextBlock Text="{Binding Text}" VerticalAlignment="Bottom" Effect="{StaticResource BlackShadow}" Margin="0,0,5,0"/> 
      <TextBlock Text="{Binding Text}" ToolTip="{Binding Pronunciations}" Style="{StaticResource Spelling.TextGlyph}" VerticalAlignment="Bottom" Margin="0,0,5,0"/>    
      </Grid> 
     </DataTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 
</ResourceDictionary> 
+0

Опубликовать Ваше текущее XAML и скриншот того, что вы в настоящее время против того, что вы ожидаете. –

+0

@HighCore Добавлено. –

ответ

0

Я понял это! Я должен был использовать Label так, что я мог бы использовать ControlTemplate, который затем позволяет мне использовать DataTrigger и TargetName

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:models="clr-namespace:DesktopDictation.Spelling.Models"> 
    <ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="../FontStyles/TextBlock.DefaultFont.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
    <DropShadowEffect x:Key="BlackShadow" ShadowDepth="2" Direction="270" Color="Black" Opacity="75" BlurRadius="2"/> 
    <Style x:Key="Spelling.TextGlyph" TargetType="TextBlock" BasedOn="{StaticResource TextBlock.DefaultFontFamilyStyle}"> 
    <Setter Property="FontWeight" Value="Normal"/> 
    <Setter Property="FontSize" Value="12"/> 
    <Setter Property="Foreground" Value="#FFFFFF"/> 
    </Style> 
    <Style x:Key="GlyphList" TargetType="ItemsControl"> 
    <Setter Property="ItemsPanel"> 
     <Setter.Value> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"/> 
     </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="ItemTemplate"> 
     <Setter.Value> 
     <DataTemplate DataType="models:SpellingGlyph"> 
      <Label x:Name="MainSmall" VerticalAlignment="Bottom"> 
      <Label.Template> 
       <ControlTemplate> 
       <Grid> 
        <TextBlock Name="Shadow" Text="{Binding Text}" VerticalAlignment="Bottom" Style="{StaticResource Spelling.TextGlyph}" Effect="{StaticResource BlackShadow}" Margin="0,0,5,0"/> 
        <TextBlock Name="MainText" Text="{Binding Text}" ToolTip="{Binding Pronunciations}" Style="{StaticResource Spelling.TextGlyph}" VerticalAlignment="Bottom" Margin="0,0,5,0"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <DataTrigger Binding="{Binding ElementName=MainText, Path=IsMouseOver}" Value="True"> 
        <Setter TargetName="MainText" Property="Foreground" Value="#75BAFF"/> 
        <Setter TargetName="MainText" Property="FontWeight" Value="SemiBold"/> 
        <Setter TargetName="MainText" Property="FontSize" Value="22"/> 
        <Setter TargetName="Shadow" Property="Foreground" Value="#75BAFF"/> 
        <Setter TargetName="Shadow" Property="FontWeight" Value="SemiBold"/> 
        <Setter TargetName="Shadow" Property="FontSize" Value="22"/> 
        </DataTrigger> 
       </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Label.Template> 
      </Label> 
     </DataTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 
</ResourceDictionary> 
Смежные вопросы