2012-05-07 23 views
14

Tôi đang gặp rắc rối thực hiện một phim hoạt hình kịch bản đơn giản dựa trên chiều cao của một điều khiển trong một ứng dụng C#/XAML Metro-style trên Windows 8.Làm thế nào để animate chiều cao tầm kiểm soát trong Windows 8 XAML

Các XAML tầm thường sau và mã đằng sau đoạn hoạt động tốt trong Silverlight 5 và Windows Phone 7, nhưng không làm gì cả trong Windows 8 (ít nhất là đối với tôi):

<Page.Resources> 
    <Storyboard x:Name="expandAnimation"> 
     <DoubleAnimation Storyboard.TargetName="scaleButton" Storyboard.TargetProperty="Height" From="50" To="200" Duration="0:0:1"/> 
    </Storyboard> 
</Page.Resources> 

<StackPanel Width="200"> 
    <Button x:Name="scaleButton" Click="scaleButton_Click" Content="Scale"/> 
    <Button Content="Another button"/> 
    <Button Content="Yet another button"/> 
</StackPanel> 

C# mã:

private void scaleButton_Click(object sender, RoutedEventArgs e) 
{ 
    expandAnimation.Begin(); 
} 

cùng mã có thể được thay đổi để làm sống động các thuộc tính khác của điều khiển như Opacity hoạt động như mong đợi.

Tôi có thể tạo hoạt ảnh cho ScaleTransform để thực hiện mở rộng quy mô, nhưng nó làm thay đổi hiển thị nội bộ của điều khiển và không ảnh hưởng đến bố cục của các điều khiển lân cận, đây là vấn đề đối với tôi.

Hy vọng rằng tôi không thiếu bất kỳ điều gì rõ ràng ở đây, nhưng điều này không nên hoạt động?

Trả lời

29

Bạn chỉ cần thêm EnableDependentAnimation="True" và sau đó nó sẽ hoạt động tốt.

+1

Cảm ơn bạn rất nhiều @Sofian! Thêm 'EnableDependentAnimation =" True "' vào phần tử DoubleAnimation trong xaml ở trên đã thực hiện thủ thuật. – Pete

+0

Cảm ơn rất nhiều nhưng bạn có thể giải thích những gì tài sản này không. – Stilgar

+1

@Stilgar http://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj819807#dependent giải thích lý do – legends2k

2

Hoạt ảnh phụ thuộc là một hoạt ảnh sẽ khiến cho Xaml sắp xếp lại. Đắt; do đó yêu cầu "chọn tham gia".

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.media.animation.pointanimation.enabledependentanimation.aspx

Nếu có thể bạn nên sử dụng một render chuyển đổi và mở rộng quy mô của yếu tố hình ảnh để thay thế. Điều này là độc lập có nghĩa là phần còn lại của các yếu tố trên trang sẽ không cần phải di chuyển để phù hợp.

Các vấn đề liên quan