كيفية القيام بما يلي: تعيين خاصية بعد تحريكها بلوحة العمل

في بعض الحالات، أنه قد يظهر أنك لا تستطيع تغيير القيمة الخاصية بعد قد تم تحريكها.

مثال

في المثال التالي Storyboard يُستخدم لتحريك اللون SolidColorBrush. يتم تشغيل القصة المصورة عند النقر على زر. Completed يتم التعامل مع الحدث بحيث يتم إعلامك البرنامج عند ColorAnimation إكمال.

<Button
  Content="Animate and Then Set Example 1">
  <Button.Background>
    <SolidColorBrush x:Name="Button1BackgroundBrush"
      Color="Red" />
  </Button.Background>
  <Button.Triggers>
    <EventTrigger RoutedEvent="Button.Click">
      <BeginStoryboard>
        <Storyboard>
          <ColorAnimation
            Storyboard.TargetName="Button1BackgroundBrush"
            Storyboard.TargetProperty="Color"
            From="Red" To="Yellow" Duration="0:0:5"
            FillBehavior="HoldEnd"
            Completed="setButton1BackgroundBrushColor" />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </Button.Triggers>
</Button>

بعد ColorAnimationاكتمال برنامج محاولات لتغيير لون الفرشاة إلى اللون الأزرق.

        Private Sub setButton1BackgroundBrushColor(ByVal sender As Object, ByVal e As EventArgs)

            ' Does not appear to have any effect:
            ' the brush remains yellow.
            Button1BackgroundBrush.Color = Colors.Blue
        End Sub
private void setButton1BackgroundBrushColor(object sender, EventArgs e)
{

    // Does not appear to have any effect:
    // the brush remains yellow.
    Button1BackgroundBrush.Color = Colors.Blue;
}

رمز السابقة لا يبدو أن تفعل شيئا : يبقى الفرشاة أصفر ، وهو القيمة التي تم توفيره من قبل ColorAnimation متحرك الفرشاة. يتم تغيير قيمة الخاصية الأساسية (القيمة الأساس) فعليا إلى اللون الأزرق. ومع ذلك، يبقى فعالة أو الحالية، أو القيمة الأصفر لأن ColorAnimation لا يزال يتم تجاوز قيمة الأساسي. إذا كنت تريد أن القيمة الأساسية لتصبح قيمة فعالة مرة أخرى ، يجب إيقاف الحركة من التأثير على الخاصية. توجد ثلاث طرق للقيام بذلك صواب storyboard الحركات:هناك ثلاث

  • قم بتعيين خاصية FillBehavior التابعة لعنصر تحكم إلى Stop.

  • إزالة القصة المصورة بأكملها.

  • إزالة الحركة من الخاصية الفردية .

مجموعة الحركة العقارية في سلوك التعبئة من أجل وقف

بواسطة تعيين FillBehavior إلى Stop ، معرفة الحركة إلى توقف التأثير على الخاصية الهدف الخاصة به بعد الوصول إلى نهاية به نشطة فترة.

<Button
  Content="Animate and Then Set Example 2">
  <Button.Background>
    <SolidColorBrush x:Name="Button2BackgroundBrush"
      Color="Red" />
  </Button.Background>
  <Button.Triggers>
    <EventTrigger RoutedEvent="Button.Click">
      <BeginStoryboard>
        <Storyboard>
          <ColorAnimation
            Storyboard.TargetName="Button2BackgroundBrush"
            Storyboard.TargetProperty="Color"
            From="Red" To="Yellow" Duration="0:0:5"
            FillBehavior="Stop"
            Completed="setButton2BackgroundBrushColor" />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </Button.Triggers>
</Button>
        Private Sub setButton2BackgroundBrushColor(ByVal sender As Object, ByVal e As EventArgs)

            ' This appears to work:
            ' the brush changes to blue.
            Button2BackgroundBrush.Color = Colors.Blue
        End Sub
private void setButton2BackgroundBrushColor(object sender, EventArgs e)
{

    // This appears to work:
    // the brush changes to blue.
    Button2BackgroundBrush.Color = Colors.Blue;
}

إزالة القصة المصورة بأكملها.

باستخدام RemoveStoryboard المشغّل أو Storyboard.Remove الأسلوب ، كنت أقول لوقف الرسوم المتحركة القصة المصورة التي تؤثر على خصائص المستهدفة. الفرق بين هذا الأسلوب وتعيين FillBehavior خاصية يتم إزالة لوحة العمل في أي وقت, بينما FillBehavior خاصية يتضمن تأثير فقط عندما يصل الحركة إلى نهاية به نشطة فترة.

<Button
  Name="Button3"
  Content="Animate and Then Set Example 3">
  <Button.Background>
    <SolidColorBrush x:Name="Button3BackgroundBrush"
      Color="Red" />
  </Button.Background>
  <Button.Triggers>
    <EventTrigger RoutedEvent="Button.Click">
      <BeginStoryboard Name="MyBeginStoryboard">
        <Storyboard x:Name="MyStoryboard">
          <ColorAnimation
            Storyboard.TargetName="Button3BackgroundBrush"
            Storyboard.TargetProperty="Color"
            From="Red" To="Yellow" Duration="0:0:5"
            FillBehavior="HoldEnd"
            Completed="setButton3BackgroundBrushColor" />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </Button.Triggers>
</Button>
        Private Sub setButton3BackgroundBrushColor(ByVal sender As Object, ByVal e As EventArgs)

             ' This appears to work:
            ' the brush changes to blue.
            MyStoryboard.Remove(Button3)
            Button3BackgroundBrush.Color = Colors.Blue
        End Sub
private void setButton3BackgroundBrushColor(object sender, EventArgs e)
{

     // This appears to work:
    // the brush changes to blue.
    MyStoryboard.Remove(Button3);
    Button3BackgroundBrush.Color = Colors.Blue;
}    

إزالة للرسوم المتحركة من الخاصية الفردية

تقنية أخرى لإيقاف حركة من التأثير على صواب هي استخدام BeginAnimation(DependencyProperty, AnimationTimeline) أسلوب للكائن الجاري متحرك. تحديد الخاصية التى يتم تحريكها كمعلمة الأولى و null كـالثانية.

<Button
  Name="Button4"
  Content="Animate and Then Set Example 4">
  <Button.Background>
    <SolidColorBrush x:Name="Button4BackgroundBrush"
      Color="Red" />
  </Button.Background>
  <Button.Triggers>
    <EventTrigger RoutedEvent="Button.Click">
      <BeginStoryboard>
        <Storyboard>
          <ColorAnimation
            Storyboard.TargetName="Button4BackgroundBrush"
            Storyboard.TargetProperty="Color"
            From="Red" To="Yellow" Duration="0:0:5"
            FillBehavior="HoldEnd"
            Completed="setButton4BackgroundBrushColor" />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </Button.Triggers>
</Button>
        Private Sub setButton4BackgroundBrushColor(ByVal sender As Object, ByVal e As EventArgs)

             ' This appears to work:
            ' the brush changes to blue.
            Button4BackgroundBrush.BeginAnimation(SolidColorBrush.ColorProperty, Nothing)
            Button4BackgroundBrush.Color = Colors.Blue
        End Sub
private void setButton4BackgroundBrushColor(object sender, EventArgs e)
{

     // This appears to work:
    // the brush changes to blue.
    Button4BackgroundBrush.BeginAnimation(SolidColorBrush.ColorProperty, null);
    Button4BackgroundBrush.Color = Colors.Blue;
}    

يعمل هذا الأسلوب أيضاً الحركات غير لوحة العمل.

راجع أيضًا:

المرجع

FillBehavior

Storyboard.Remove

RemoveStoryboard

المبادئ

نظرة عامة حول الحركة

نظرة عامة حول أساليب تحريك الخاصية