none
Exception bei BeginAnimation RRS feed

  • Frage

  • Ich versuche eine Animation nicht im XAML, sondern im Code auszulösen. Leider bekomme ich dabei immer eine Exception "Zeilennummer "28" und Zeilenposition "11" von "Bei der Initialisierung von "System.Windows.Controls.TextBox" wurde eine Ausnahme ausgelöst."."...

    <TextBox Height="35" HorizontalAlignment="Left" Margin="13,170,0,0" Name="TextBox1" VerticalAlignment="Top" Width="0" Text="test">
          <TextBox.Triggers>
            <EventTrigger>
              <BeginStoryboard>
                <Storyboard>
                  <DoubleAnimation Storyboard.TargetProperty="Width" To="293" Duration="0:0:2" FillBehavior="HoldEnd" Name="slideIn" />
                </Storyboard>
              </BeginStoryboard>
            </EventTrigger>
          </TextBox.Triggers>
        </TextBox>
    

    angestoßen wird die Animation dann mit:

    TextBox1.BeginAnimation(TextBox.WidthProperty, slideIn)

     

    Wenn ich das XAML wie folgt umschreibe, bekomme ich keine Exception mehr - allerdings kann ich dann "slideIn" nicht mehr verwenden.

    "Error 1 'slideIn' is not declared. It may be inaccessible due to its protection level. H:\Visual Studio 2010\Projects\SKLogos\SKLogos\Animationen.xaml.vb 4 56 SKLogos"

        <TextBox Height="35" HorizontalAlignment="Left" Margin="13,170,0,0" Name="TextBox1" VerticalAlignment="Top" Width="0" Text="test">
          <TextBox.Resources>
            <DoubleAnimation Storyboard.TargetProperty="Width" To="293" Duration="0:0:2" FillBehavior="HoldEnd" x:Name="slideIn" x:Key="slideIn"/>
          </TextBox.Resources>
    

     

    Weiß jemand wie es richtig wäre? Mir gehen gerade die Ideen aus...

    Montag, 16. Mai 2011 11:47

Antworten

  • ganz schön verwirrend das Thema.

    Ich hab mir grad http://msdn.microsoft.com/en-us/library/ff725476(Expression.40).aspx angeschaut. Aber beim Versuch das untere Beispiel in VB zu schreiben habe ich schon wieder aufgegeben. Weder kennt mein VisualStudio die Klasse Behavior oder ICommand, noch ist mir wirklich klar geworden wie ich aus diesem Behavior anstoße, dass das Textfeld langsam größer wird.

     

    Nach längerem Probieren habe ich allerdings eine Möglichket gefunden meine DoubleAnimation direkt aus der Klasse aufzurufen (mit dem unteren XAML-Code aus der Frage):

    TextBox1.BeginAnimation(TextBox.WidthProperty, TextBox1.Resources.Item("slideIn"))
    
    Einfache Wege sind mir immernoch die liebsten ;)
    • Als Antwort markiert Quidnunc1987 Dienstag, 17. Mai 2011 12:41
    Dienstag, 17. Mai 2011 12:41

Alle Antworten

  • Hi,

    ich hatte auch mal so ein Problem. Ich konnte es damals auf diesem Wege auch nicht lösen. Ich habe schliesslich ein Workaround verwendet. Ich habe mir ein Behavoiur programmiert (ist ne Attached Property). Das hat auch noch den Vorteil, dass du das Verhalten an jedes FrameworkElement (oder je nach Ableitung) anheften kanntst.

    Frank Dzaebel hat auf seiner Seite ein sehr nettes Beispiel und einige sehr aufschlussreiche Links dazu (http://dzaebel.net/Behaviors.htm), und ausserdem gibt es im Internet bereits viele fertige Behavoiurs die du Einsetzen kannst (Einfach mal Google anwerfen ;o)).

    Ich hoffe, ich konnte dir weiterhelfen, ansonsten bitte gezielt nachfragen...

     

    Viele Grüße
    Holger M. Rößler

     


    Dienstag, 17. Mai 2011 11:08
  • ganz schön verwirrend das Thema.

    Ich hab mir grad http://msdn.microsoft.com/en-us/library/ff725476(Expression.40).aspx angeschaut. Aber beim Versuch das untere Beispiel in VB zu schreiben habe ich schon wieder aufgegeben. Weder kennt mein VisualStudio die Klasse Behavior oder ICommand, noch ist mir wirklich klar geworden wie ich aus diesem Behavior anstoße, dass das Textfeld langsam größer wird.

     

    Nach längerem Probieren habe ich allerdings eine Möglichket gefunden meine DoubleAnimation direkt aus der Klasse aufzurufen (mit dem unteren XAML-Code aus der Frage):

    TextBox1.BeginAnimation(TextBox.WidthProperty, TextBox1.Resources.Item("slideIn"))
    
    Einfache Wege sind mir immernoch die liebsten ;)
    • Als Antwort markiert Quidnunc1987 Dienstag, 17. Mai 2011 12:41
    Dienstag, 17. Mai 2011 12:41