jestem aprowizacji z niektórych storyboardy w aplikacji Metro XAML. Muszę utworzyć kod Storyboard
. Chciałbym ustawić Storyboard.TargetProperty
do CompositeTransform.Rotation
Nie można ustawić Storyboard.TargetProperty do CompositeTransform.Rotation w stylu Metro aplikacji z kodu
Wydaje się niemożliwe ...
Moje Storyboard w XAML wygląda następująco:
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="grid">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="60"/
</DoubleAnimationUsingKeyFrames>
</Storyboard>
Chciałbym stworzyć coś podobnego.
Ważne: ja nie próbuję RECReate dokładnie ten Storyboard. Jestem wewnątrz kodu niestandardowego ContentControl
, więc this
jest Control
, a nie ma „grid” do celu animację. Celem jest sama kontrola, która wcześniej została ustawiona.
Mój kod do tej pory jest tak:
var turnSB = new Storyboard();
var doubleAnim = new DoubleAnimationUsingKeyFrames();
doubleAnim.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = TimeSpan.FromMilliseconds(0), Value = currentAngle });
doubleAnim.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = TimeSpan.FromMilliseconds(500), Value = targetAngle });
turnSB.Children.Add(doubleAnim);
Storyboard.SetTarget(doubleAnim, this.RenderTransform);
Storyboard.SetTargetProperty(doubleAnim, "(CompositeTransform.Rotation)");
turnSB.Begin();
Jak tylko trafi metodę Rozpocznij uzyskać wyjątek mówiący, że (CompositeTransform.Rotation) nie może zostać rozwiązany. Zgaduję, że ścieżka własności nie była całkiem właściwa. Próbowałem różnych odmian, ale zgodnie z PropertyPaths, to powinno być prawidłowe, czyż nie? : S
Jeśli jest to nierozwiązywalny problem, jestem otwarty na sugestie na obejście ...
EDIT:
myślę, że rozwiązali problem teraz. Mam kilka ciekawych wniosków chociaż ...
Jeśli zrobię UserControl można zrobić praktycznie wszystko. Wszystko działa, mogę ustawić Storyboard.Targetproperty, a animacja jest odtwarzana poprawnie.
Jeśli jednak używam kontrolki niestandardowej lub dziedziczę z innej kontrolki (np. ContentControl), nie mogę uruchomić Scenariusza z kodu, tylko w niektórych przypadkach.
Na przykład: jeśli robię storyboard (zdefiniowane w XAML) animowanie obrotu (lub dowolną właściwość transformacji dla tej sprawy) i spróbuj uruchomić z kodu, otrzymuję powyższy wyjątek. Ale jeśli animuję prostą właściwość, powiedzmy Opacity, działa dobrze.
(Zrobiłem to samo z UserControl i zadziałało.)
Czy ktoś może to wyjaśnić?
Mam ten sam problem, posiadające klasy dziedziczą z Grid Control, storyboardy prostu wygrał” t start. –
Należy zwrócić uwagę na to, że siatka nie jest dziedziczona po kontroli, więc nie jest to naprawdę niestandardowy formant, który tworzysz. –
Nie korzystałem z Grid, dziedziczyłem z ContentControl. Xaml pochodzi z poprzedniej próby, gdzie miałem kontrolkę UserControl, która miała w sobie Grid, i to było celem animacji. Ale jeśli chodzi o tę sytuację, celem powinna być sama kontrola. Które - jeśli przeczytałeś uważnie - opisałem w sekcji "Ważne". – Tenshiko