head.WriteLine()

Sonntag, Dezember 17, 2006

WPF/E: Limitationen bei Event Triggern

In WPF/E werden zum Animieren von Elementen - ebenso wie in WPF - Event Trigger verwendet. Diese reagieren bei bestimmten Ereignissen und führen daraufhin entsprechende Animationslogik aus.

Die aktuelle CTP unterstützt jedoch nur das Loaded-Event, was die Möglichkeiten deutlich einschränkt. Wenn Sie beispielsweise eine Animation starten wollen, wenn der Benutzer auf ein Element klickt, so können Sie diese zwar per Java Script starten, sie wird jedoch beim initialen Laden der Seite bereits ausgeführt.

Ein Workaround besteht darin, die Animation dynamisch hinzuzfügen. Hierbei deklarieren Sie den Event Trigger nicht in Ihrer XAML-Datei, sondern erzeugen ihn zur Laufzeit per Java Script.

var xaml = "<EventTrigger>";
xaml = xaml + " <EventTrigger.Actions>";
xaml = xaml + " <BeginStoryboard>";
xaml = xaml + " <Storyboard x:Name='imageAnimation'>";
xaml = xaml + " <DoubleAnimation ...";
xaml = xaml + " ...";
xaml = xaml + " </Storyboard>";
xaml = xaml + " </BeginStoryboard>";
xaml = xaml + " </EventTrigger.Actions>";
xaml = xaml + "</EventTrigger>";

var wpfeControl = document.getElementById("wpfeControl1");
var canvas = wpfeControl.findName("rootCanvas");
var trigger = wpfeControl.createFromXaml(xaml);
canvas.Children.Add(trigger);

Bleibt zu hoffen, dass dieser Workaround zur finalen Version überflüssig wird.