2016-05-26 6 views
0

Trueに設定すると、私のボタンが起動し、ボタンが動くというボタンIsEnabledのプロパティにstyle triggerがあります。これは、アプリケーションがロードされて実行されると、コードを無効にしてからコードを無効にして(MVVM)、再度有効にするとうまくいきます。ただし、triggerは初期ロード時に起動しません。したがって、デフォルトで有効になっているすべてのボタンは動揺しません。トリガーをロード時に動作させるにはどうすればよいですか?ここで WPFスタイルプロパティロード時にトリガーが発生しない

は私 Styleからである私の App.xaml

<Setter Property="RenderTransformOrigin" Value="0.5,0" /> 
    <Setter Property="RenderTransform"> 
     <Setter.Value> 
      <RotateTransform /> 
     </Setter.Value> 
    </Setter> 
    <Style TargetType="{x:Type Button}" x:Key="btnDefaultStyle"> 
     <Style.Triggers> 
      <Trigger Property="IsEnabled" Value="True"> 
       <Trigger.EnterActions> 
        <BeginStoryboard> 
         <Storyboard TargetProperty="RenderTransform.Angle" RepeatBehavior="Forever"> 
          <DoubleAnimation From="0" To="-5" BeginTime="0:0:0:5.00" Duration="0:0:0.05"/> 
          <DoubleAnimation From="-5" To="0" BeginTime="0:0:0:5.05" Duration="0:0:0.05"/> 
          <DoubleAnimation From="0" To="4" BeginTime="0:0:0:5.10" Duration="0:0:0.05"/> 
          <DoubleAnimation From="4" To="0" BeginTime="0:0:0:5.15" Duration="0:0:0.05"/> 
          <DoubleAnimation From="0" To="-3" BeginTime="0:0:0:5.20" Duration="0:0:0.05"/> 
          <DoubleAnimation From="-3" To="0" BeginTime="0:0:0:5.25" Duration="0:0:0.05"/> 
          <DoubleAnimation From="0" To="2" BeginTime="0:0:0:5.30" Duration="0:0:0.05"/> 
          <DoubleAnimation From="2" To="0" BeginTime="0:0:0:5.35" Duration="0:0:0.05"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </Trigger.EnterActions> 
       <Trigger.ExitActions> 
        <BeginStoryboard> 
         <Storyboard TargetProperty="RenderTransform.Angle"> 
          <DoubleAnimation From="0" To="0" BeginTime="0:0:0:0" Duration="0:0:0.0"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </Trigger.ExitActions> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource btnDefaultStyle}" /> 

EventTriggers RoutedEvent、すなわち、 RoutedEvent="Window.Loaded"は、プロパティIsEnableイベントをオーバーライドするので使用できません。したがって、無効化されたボタンもまた動揺します。以下のような

+0

フォームがロードされてから、無期限に、またはちょっとだけ動揺するつもりですか? – Logan

+0

無期限。 5秒ごと。ただし、有効になっている場合のみ。 –

答えて

1

使用DataTrigger:

 <DataTrigger Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="True"> 
      <DataTrigger.EnterActions> 
       <BeginStoryboard> 
         ... 
       </BeginStoryboard> 
      </DataTrigger.EnterActions> 
      ... 
     </DataTrigger> 
     <DataTrigger Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="False"> 
      ... 
     </DataTrigger> 

これはあまりにも負荷時に動作します。

+0

私がEventTrigerを使用すると、 RoutedEvent = "Window.Loaded"、IsEnabledプロパティに関係なくボタンが動かされます。だからいいよ。 –

+0

@IanGM更新された回答を確認してください – AnjumSKhan

+0

こんにちは@AnjumSKhan、ありがとうございます。私はちょうどあなたに試してみたが、今は何も起こらない。しかし、すべてが完璧に見え、うまくいくようなものです。エラーなしで正常に実行されます。奇妙な。でもありがとう。 –

関連する問題