Puoi animare una proprietà di dipendenza personalizzata in Silverlight?

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

  •  09-06-2019
  •  | 
  •  

Domanda

Potrei perdermi qualcosa di veramente ovvio.Sto cercando di scrivere un pannello personalizzato in cui i contenuti sono disposti in base a un paio di proprietà di dipendenza (presumo che siano Avere essere DP perché voglio poterli animare.)

Tuttavia, quando provo a eseguire uno storyboard per animare entrambe queste proprietà, Silverlight genera un errore catastrofico.Ma se provo ad animarne solo uno, funziona bene.E se provo ad animare una delle mie proprietà e una proprietà "incorporata" (come Opacità), funziona anche.Ma se provo ad animare entrambe le mie proprietà personalizzate, ottengo l'errore Catastrofico.

Qualcun altro si è imbattuto in questo?

modificare:

I due DP sono ScaleX e ScaleY, entrambi doppi.Ridimensionano la posizione X e Y dei bambini nel pannello.Ecco come viene definito uno di essi:

    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);
    }

Modificare:L'ho provato con e senza la chiamata a InvalidateArrange (che è assolutamente necessaria in ogni caso) e il risultato è lo stesso.Il gestore eventi non viene nemmeno chiamato prima che si verifichi l'errore catastrofico.

È stato utile?

Soluzione

È un bug documentato con Silverlight 2 Beta 2.Non è possibile animare due proprietà di dipendenza personalizzate sullo stesso oggetto.

Altri suggerimenti

Vorrei provare a commentare InvalidateArrange in OnPropertyChanged e vedere cosa succede.

Spero che non sia una cattiva forma rispondere alla mia stessa domanda.

Silverlight 2 Release Candidate 0 è stato rilasciato oggi, ho testato questo problema e sembra che sia stato risolto.Entrambi i DP personalizzati nel mio pannello di test ora possono essere animati correttamente, quindi l'app si comporta come previsto.Il che è carino.

Tieni presente che questo RC è solo un RC basato sullo sviluppatore, quindi la build standard di Silverlight non è stata aggiornata.Mi aspetto che venga rilasciato completamente nel prossimo mese, però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top