2016-04-05 6 views
0

Ich erhalte die folgende Ausnahme intermittierend beim Auslösen eines Storyboards auf einem Benutzersteuerelement durch einen Ansichtszustand.Intermittierende Ausnahme in Storyboard in UWP/Winrt-Anwendung

WinRT Informationen: Kann nicht lösen Target (Hintergrund) (SolidColorBrush.Color) auf bestimmtes Objekt

Mein Storyboard unten ist -

<StackPanel Orientation="Horizontal"> 
     <VisualStateManager.VisualStateGroups> 
      <VisualStateGroup> 
       <VisualState x:Name="Connecting"> 
        <Storyboard RepeatBehavior="Forever"> 
         <ColorAnimationUsingKeyFrames Storyboard.TargetName="Bd1" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"> 
          <DiscreteColorKeyFrame Value="#F7F7F7" KeyTime="0:0:0" /> 
          <DiscreteColorKeyFrame Value="#6CBF25" KeyTime="0:0:1" /> 
          <DiscreteColorKeyFrame Value="#F7F7F7" KeyTime="0:0:5" /> 
         </ColorAnimationUsingKeyFrames> 
         <ColorAnimationUsingKeyFrames Storyboard.TargetName="Bd1" Storyboard.TargetProperty="(BorderBrush).(SolidColorBrush.Color)"> 
          <DiscreteColorKeyFrame Value="#919191" KeyTime="0:0:0" /> 
          <DiscreteColorKeyFrame Value="#01851F" KeyTime="0:0:1" /> 
          <DiscreteColorKeyFrame Value="#919191" KeyTime="0:0:5" /> 
         </ColorAnimationUsingKeyFrames> 

        </Storyboard> 
       </VisualState> 
      </VisualStateGroup> 
     </VisualStateManager.VisualStateGroups> 
     <Border x:Name="Bd1" Height="5" /> 
    </StackPanel> 

Und wie ich es auslösen

VisualStateManager.GoToState(this, "Connecting", false); 
.

Dieser visuelle Status wird normalerweise sofort beim Laden von UserControl ausgelöst.

Antwort

1

Es schlägt fehl, weil es keine SolidColorBrush definiert auf gibt. Background ist vom Typ Brush so können Sie mit einem SolidColorBrush wie so initialisieren und Ihre Animation sollte funktionieren. Ich habe BorderBrush so gut wie Sie, dass animieren und ein Width so können Sie es auf dem Bildschirm

<Border x:Name="Bd1" Width="200" Height="5" Background="Red" BorderBrush="Red" /> 
1

Ihre Grenze sehen keine Standardfarbe. Sie können daher nicht vom Storyboard darauf zugreifen.

Dies funktioniert:

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup x:Name="BorderAnimationGroup"> 
      <VisualStateGroup.Transitions> 
       <VisualTransition GeneratedDuration="0"/> 
      </VisualStateGroup.Transitions> 
      <VisualState x:Name="Connecting"> 
       <Storyboard RepeatBehavior="Forever"> 
        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="Bd1"> 
         <EasingColorKeyFrame KeyTime="0" Value="#FFF7F7F7"/> 
         <EasingColorKeyFrame KeyTime="0:0:1" Value="#FF6CBF25"/> 
         <EasingColorKeyFrame KeyTime="0:0:5" Value="#FFF7F7F7"/> 
        </ColorAnimationUsingKeyFrames> 
        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="Bd1"> 
         <EasingColorKeyFrame KeyTime="0" Value="#FF919191"/> 
         <EasingColorKeyFrame KeyTime="0:0:1" Value="#FF01851F"/> 
         <EasingColorKeyFrame KeyTime="0:0:5" Value="#FF919191"/> 
        </ColorAnimationUsingKeyFrames> 
       </Storyboard> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 
    <Border x:Name="Bd1" BorderBrush="#FF919191" BorderThickness="1" Height="5" Background="White"> 
     <Interactivity:Interaction.Behaviors> 
      <Core:EventTriggerBehavior> 
       <Core:GoToStateAction StateName="Connecting"/> 
      </Core:EventTriggerBehavior> 
     </Interactivity:Interaction.Behaviors> 
    </Border> 
</StackPanel>