기본적으로 EventTrigger에서는 로지컬 처리가 불가능 합니다.
대신 DataTrigger로 대체 하여 처리 가능합니다.
다음은 간단한 샘플의 코드 입니다.
[xaml]
<Window.Resources>
<Storyboard x:Key="BtnStartShake">
<DoubleAnimationUsingKeyFrames RepeatBehavior="Forever"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)">
<EasingDoubleKeyFrame KeyTime="0:0:0"
Value="0" />
<EasingDoubleKeyFrame KeyTime="0:0:0.1"
Value="-5" />
<EasingDoubleKeyFrame KeyTime="0:0:0.2"
Value="5" />
<EasingDoubleKeyFrame KeyTime="0:0:0.3"
Value="-5" />
<EasingDoubleKeyFrame KeyTime="0:0:0.4"
Value="5" />
<EasingDoubleKeyFrame KeyTime="0:0:0.5"
Value="0" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="BtnEndShake">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)">
<EasingDoubleKeyFrame KeyTime="0:0:0"
Value="0" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="xInputTextBox"
Grid.Column="0"
Height="35"
Text="텍스트를 입력하세요!"
Margin="10"/>
<Button Grid.Column="1"
Height="35"
Width="100"
Content="Click"
Margin="10">
<Button.RenderTransform>
<TranslateTransform/>
</Button.RenderTransform>
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<!--텍스트 박스가 기본 문구 이거나-->
<DataTrigger Binding="{Binding ElementName=xInputTextBox, Path=Text, UpdateSourceTrigger=PropertyChanged}"
Value="텍스트를 입력하세요!">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource BtnStartShake}" />
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource BtnEndShake}" />
</DataTrigger.ExitActions>
</DataTrigger>
<!--텍스트 박스가 비어 있거나-->
<DataTrigger Binding="{Binding ElementName=xInputTextBox, Path=Text, UpdateSourceTrigger=PropertyChanged}"
Value="">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource BtnStartShake}" />
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource BtnEndShake}" />
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
텍스트 박스의 Text 속성 값 기준으로
텍스트 박스에 값이 비 어 있거나,
텍스트 박스에 값이 기본 문구 라면,
버튼이 좌.우로 흔들리도록 처리 된 예제 입니다.
다만, 위 예는 버튼 클릭시 동작이 아닌 텍스트 박스의 값이 변경 될때 트리거가 발생 합니다.
작성하신 이 조건과도 같이 부합 되어야 한다면
버튼에 Command를 처리해서 텍스트 박스의 값을 체크하여
원하는 조건인지 판단하는 flag 속성을 바인딩 해서 처리 하셔야 합니다.
위 예시 코드에서 ElementName=xInputTextBox 부분을
조건 판단 유무의 flag속성으로 바인딩을 대체 하면 될 것 같습니다.