Können Sie eine benutzerdefinierte Abhängigkeitseigenschaft in Silverlight animieren?

StackOverflow https://stackoverflow.com/questions/62382

  •  09-06-2019
  •  | 
  •  

Frage

Ich könnte etwas wirklich offensichtlich fehlen. Ich versuche, eine benutzerdefinierte Panels zu schreiben, wo der Inhalt entsprechend ausgelegt sind, um ein paar Abhängigkeitseigenschaften (Ich gehe davon aus sie wurde zu DPs sein, weil ich in der Lage sein wollen, dass sie zu animieren.)

Allerdings, wenn ich versuche, ein Storyboard läuft diese beiden Eigenschaften zu animieren, wirft Silverlight einen Catastophic Fehler. Aber wenn ich versuche, nur einen von ihnen zu animieren, es funktioniert gut. Und wenn ich versuche, eine meiner Eigenschaften zu animieren und eine ‚eingebaute‘ Eigenschaft (wie Opazität) funktioniert es auch. Aber wenn ich versuche, beiden Eigenschaften meiner Gewohnheit zu animieren erhalte ich die Katastrophalen Fehler.

Wer sonst kommt über das?

edit:

Die beiden DPs sind ScaleX und ScaleY - beide Doppelzimmer. Sie skalieren, um die X- und Y-Position von Kindern in der Platte. Hier ist, wie einer von ihnen ist definiert:

    public double ScaleX
    {
        get { return (double)GetValue(ScaleXProperty); }
        set { SetValue(ScaleXProperty, value); }
    }

    /// <summary> 
    /// Identifies the ScaleX dependency property.
    /// </summary> 
    public static readonly DependencyProperty ScaleXProperty =
                DependencyProperty.Register(
                      "ScaleX",
                      typeof(double),
                      typeof(MyPanel),
                      new PropertyMetadata(OnScaleXPropertyChanged));

    /// <summary>
    /// ScaleXProperty property changed handler. 
    /// </summary>
    /// <param name="d">MyPanel that changed its ScaleX.</param>
    /// <param name="e">DependencyPropertyChangedEventArgs.</param> 
    private static void OnScaleXPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        MyPanel _MyPanel = d as MyPanel;
        if (_MyPanel != null)
        {
            _MyPanel.InvalidateArrange(); 
        }
    }

    public static void SetScaleX(DependencyObject obj, double val)
    {
        obj.SetValue(ScaleXProperty, val);
    }

    public static double GetScaleX(DependencyObject obj)
    {
        return (double)obj.GetValue(ScaleXProperty);
    }

Edit: Ich habe versucht, es mit und ohne den Anruf zu InvalidateArrange (die in jedem Fall unbedingt notwendig ist), und das Ergebnis ist das gleiche. Die Event-Handler nicht einmal aufgerufen, bevor die Katastrophalen Fehler beginnen.

War es hilfreich?

Lösung

Es ist eine dokumentierte Bug mit Silverlight 2 Beta 2. Sie nicht zwei benutzerdefinierten dependancy Eigenschaften auf demselben Objekt animieren können.

Andere Tipps

Ich würde versuchen, die InvalidateArrange im OnPropertyChanged kommentieren und sehen, was passiert.

Ich hoffe, es ist nicht schlecht Form meine eigene Frage zu beantworten.

Silverlight 2 Release Candidate 0 heute veröffentlicht wurde, habe ich dieses Problem darauf getestet, und es scheint behoben wurde. Beide Benutzerdefinierte DPs in meinem Test-Panel kann nun korrekt animiert werden, so dass die App wie erwartet verhält. Welches ist schön.

Hinweis

, dass dieses RC ist nur ein Entwickler-basierte RC so die Standard-Version von Silverlight wurde nicht aktualisiert. Ich würde erwarten, dass es in den nächsten Monaten vollständig freigegeben werden, wenn.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top