2009-09-22 4 views
1

포커스가있는 동안 집중된 UI 요소 (텍스트 상자, 콤보 등)를 강조 표시하고 포커스가 사라지면 사라지는 간단한 스타일을 만들려고합니다. `WPF 스타일, BasedOn 및 스토리 보드

<Style TargetType="{x:Type FrameworkElement}" x:Key="OnFocus"> 
     <Setter Property="Effect"> 
      <Setter.Value> 
       <DropShadowEffect Color="Red" 
         BlurRadius="0" 
         ShadowDepth='0' /> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <EventTrigger RoutedEvent="UIElement.GotFocus"> 
        <BeginStoryboard Name="highlight"> 
         <Storyboard> 
          <DoubleAnimation 
       Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.BlurRadius)" 
          To="8" 
          Duration="0:0:0.5" /> 
         </Storyboard> 
        </BeginStoryboard> 

       </EventTrigger> 
      <EventTrigger RoutedEvent="UIElement.LostFocus"> 
       <RemoveStoryboard BeginStoryboardName="highlight"></RemoveStoryboard> 
      </EventTrigger> 

     </Style.Triggers> 


    </Style>` 

을하지만 시도하고 간단한 BasedOn 스타일을 만들 경우, BeginStoryboardName = "하이라이트"를 찾을 수 없기 때문에 각 요소가 전체 스타일을 가진 끝 :

나는이 함께했다. 트리거.

더 좋은 방법이 있나요?

+0

약 400 개의 freakin 요소가 있기 때문에 스타일/xaml 솔루션을 찾고 있습니다. –

답변

1

스타일이 OO 상속처럼 상속되지 않기 때문에 중첩 스타일은 해당 범위에서 스토리 보드를 찾을 수 없습니다.

강조 표시를 수행하는 가장 쉬운 방법은 강조 표시를 취소하는 두 번째 스토리 보드를 추가하는 것입니다.

<Storyboard x:Key="startHighlight" > 
      <DoubleAnimation 
       Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.BlurRadius)" 
       To="8" 
       Duration="0:0:0.5" /> 
     </Storyboard> 
     <Storyboard x:Key="reverseHighlight" > 
      <DoubleAnimation 
       Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.BlurRadius)" 
       To="0" 
       Duration="0:0:0.2" /> 
     </Storyboard> 

     <Style TargetType="{x:Type FrameworkElement}"> 
      <Setter Property="Effect"> 
       <Setter.Value> 
        <DropShadowEffect Color="Red" 
             BlurRadius="0" 
             ShadowDepth="0" /> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <EventTrigger RoutedEvent="UIElement.GotFocus"> 
        <BeginStoryboard Storyboard="{StaticResource startHighlight}"> 
        </BeginStoryboard> 
       </EventTrigger> 
       <EventTrigger RoutedEvent="UIElement.LostFocus"> 
        <BeginStoryboard Storyboard="{StaticResource reverseHighlight}"> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Style.Triggers> 
     </Style> 
     <Style BasedOn="{StaticResource {x:Type FrameworkElement}}" TargetType="{x:Type TextBox}"> 

     </Style> 
관련 문제