2013-10-22 7 views
0

KeyboardFocused가되면 단추 내의 텍스트가 빛나게하고 싶습니다.스타일이 지정된 단추의 텍스트에 BitmapEffect를 추가하는 방법

나는 이것을 할 수 없다. 여기 내 xaml입니다 :

<Style x:Key="BorderlessSymbolButtonStyle" TargetType="{x:Type Button}" > 
    <Setter Property="FocusVisualStyle" Value="{DynamicResource MetroButtonFocusVisual}"/> 
    <Setter Property="BitmapEffect"> 
     <Setter.Value> 
      <OuterGlowBitmapEffect GlowColor="White" Opacity="0" GlowSize="3" Noise=".1"/> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="BorderBrush" Value="Transparent"/> 
    <Setter Property="Foreground" Value="White"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 

       <Grid x:Name="Grid"> 
        <Border x:Name="Border" Background="{TemplateBinding Background}" 
          BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"/> 

        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
             x:Name="Content" 
             Margin="{TemplateBinding Padding}" 
             VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
             RecognizesAccessKey="True" 
             BitmapEffect="{TemplateBinding BitmapEffect}" > 

        </ContentPresenter> 
       </Grid> 

       <ControlTemplate.Triggers> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsPressed" Value="true"/> 
          <Condition Property="IsEnabled" Value="true"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="Foreground" Value="{DynamicResource GlenairMediumBlue}"/> 
        </MultiTrigger> 
        <Trigger Property="IsKeyboardFocused" Value="true"> 
         <!--<Setter Property="BorderBrush" Value="{DynamicResource DefaultedBorderBrush}" TargetName="Border"/>--> 
         <!--<Setter Property="Effect" TargetName="Border" Value="{DynamicResource BorderDropShadow}"/>--> 
         <Setter Property="BitmapEffect" > 
          <Setter.Value> 
           <OuterGlowBitmapEffect GlowColor="White" Opacity=".4" GlowSize="3" Noise=".1"/> 
          </Setter.Value> 
         </Setter> 

        </Trigger> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Foreground" Value="Gray"/> 
        </Trigger> 
        <!--<Trigger Property="IsEnabled" Value="true"> 
         <Setter Property="Foreground" Value="White"/> 
        </Trigger>--> 
        <!--<Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="Background" Value="{DynamicResource MouseOverBrush}" TargetName="Border"/> 
        </Trigger>--> 
        <!--<Trigger Property="IsPressed" Value="true"> 
         <Setter Property="Foreground" Value="{DynamicResource GlenairLighterOpaqueBlueSolidColorBrush}" /> 

        </Trigger>--> 
        <!--<Trigger Property="IsEnabled" Value="true"/> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Background" Value="{DynamicResource DisabledBackgroundBrush}" TargetName="Border"/> 
         <Setter Property="BorderBrush" Value="{DynamicResource DisabledBorderBrush}" TargetName="Border"/> 
         <Setter Property="Foreground" Value="{DynamicResource DisabledForegroundBrush}"/> 
        </Trigger>--> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

고마워요! Google/SO에서 내 문제에 대한 해결책을 찾을 수 없었습니다.

답변

2

리소스 이름을 변경하지 않고 Visual Studio로 복사/붙여 넣기를 할 수 없어 정확한 템플릿을 사용하지 못했습니다. 시도를 수정하고 완전히 분리되도록 코드를 게시 할 때 수정 문제를 훨씬 쉽게 만듭니다. D

아래에서 제공 한 템플릿은 키보드 포커스가 설정된 경우 버튼의 내용에 그림자 효과를 적용합니다. BitMapEffect 대신에 효과를 사용했습니다. 왜냐하면 훨씬 빠르며 BitMapEffect는 이제 쓸모가 없기 때문입니다. 효과 매개 변수를 조정하여 효과를 좋게 만들 수 있습니다.

enter image description here

<Window x:Class="GlowingButton.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Background="WhiteSmoke" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <Style TargetType="Button"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Button"> 

         <Border BorderBrush="Blue" CornerRadius="5" BorderThickness="1"> 
          <ContentPresenter x:Name="test" HorizontalAlignment="Center" VerticalAlignment="Center" Content="{TemplateBinding Content}"/> 
         </Border> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsKeyboardFocused" Value="True"> 
           <Trigger.Setters> 
            <Setter TargetName="test" Property="Effect"> 
             <Setter.Value> 
              <DropShadowEffect Color="Blue" BlurRadius="10" ShadowDepth="0"/> 
             </Setter.Value> 
            </Setter> 
           </Trigger.Setters> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Window.Resources> 
    <Grid> 
     <Button Margin="100" Content="test" Foreground="Black" FontSize="20"/> 
    </Grid> 
</Window> 
+0

완벽하게 일했다! BitMapEffect의 솔루션과 팁에 친절하게 감사드립니다. 또한 내 자신의 리소스 참조를 너무 많이 게시하는 것에 대해 사과드립니다. 다음에 더 많은 것을 알고 자 노력할 것입니다. 건배 :) – Rachael