Tôi đã tạo một lớp con đơn giản là StackPanel
mà tôi có thể di chuyển xung quanh màn hình bằng cách sử dụng hoạt ảnh TranslateTransform
. Có vẻ như sau:Tại sao những hoạt ảnh này không hoạt động khi tôi đang sử dụng bảng phân cảnh?
public class MovingStackPanel : StackPanel
{
public void BeginMove(Point translatePosition)
{
RenderTransform = new TranslateTransform();
Duration d = new Duration(new TimeSpan(0, 0, 0, 0, 400));
DoubleAnimation x = new DoubleAnimation(translatePosition.X, d);
DoubleAnimation y = new DoubleAnimation(translatePosition.Y, d);
/*
Storyboard.SetTarget(x, RenderTransform);
Storyboard.SetTargetProperty(x, new PropertyPath("X"));
Storyboard.SetTarget(y, RenderTransform);
Storyboard.SetTargetProperty(y, new PropertyPath("Y"));
Storyboard sb = new Storyboard();
sb.Children.Add(x);
sb.Children.Add(y);
sb.Completed += sb_Completed;
sb.Begin();
*/
RenderTransform.BeginAnimation(TranslateTransform.XProperty, x);
RenderTransform.BeginAnimation(TranslateTransform.YProperty, y);
}
void sb_Completed(object sender, EventArgs e)
{
Console.WriteLine("Completed.");
}
}
Và đây là vấn đề của tôi: Nếu tôi tạo hiệu ứng trực tiếp các thuộc tính X và Y, như mã bên trên, nó hoạt động. Nhưng nếu tôi sử dụng mã nhận xét ở trên nó, đó thực sự là sự sáng tạo đơn giản nhất của một mã số Storyboard
có thể tưởng tượng được, không có gì xảy ra. Hoạt ảnh chạy - ít nhất, sự kiện đã hoàn thành được nâng lên - nhưng không có gì thay đổi trên màn hình.
Rõ ràng là tôi đang làm điều gì đó sai, nhưng tôi không thể thấy nó là gì. Mỗi ví dụ về cách tạo bảng phân cảnh trong mã tôi đã thấy trông giống như thế này. Rõ ràng là có điều gì đó về hoạt hình và bảng phân cảnh mà tôi chưa biết: nó là gì?
FYI - Tôi đã đăng lỗi này trên Microsoft Connect. https://connect.microsoft.com/VisualStudio/feedback/details/723701/storyboard-settarget-only-works-on-uielements-but-throws-no-exception –