2011-07-02 17 views
7

Tôi có các hộp nhóm hoạt động như bộ tăng tốc trong ứng dụng của mình. Khi tôi cần phải colapse một groupbox tôi thiết lập chiều cao của nó bằng 0. khi tôi cần phải mở rộng nó, tôi thiết lập chiều cao của nó bằng tự động (double.Nan) là nó posible để làm điều này với một storyboard. Làm thế nào tôi có thể biết trước chiều cao tự động. Cụm từ biểu thức không cho phép tôi hoạt ảnh tự động.Animate chiều cao của hộp nhóm từ 0 đến tự động

enter image description here

Trả lời

5

Bạn có thể sử dụng ScaleTransform cho điều này

<GroupBox Header="GroupBox"> 
    <GroupBox.RenderTransform> 
     <ScaleTransform ScaleY="1"/> 
    </GroupBox.RenderTransform> 
</GroupBox> 

Khi sụp đổ một GroupBox thiết ScaleTransform.ScaleX để 0. Và khi expand thiết lập để 1.

+0

tôi thực sự cần phải làm động từ độ cao cụ thể để ô tô. Do đó trước khi chạy animation, tôi sẽ tạo một vòng lặp sẽ kiểm tra để xem tỉ lệ nào tôi sẽ nhận được chiều cao gần đúng là 50 (thử với 0,01 rồi .02 vv cho đến khi nó đóng) và liên kết biến đó với bảng phân cảnh của tôi. Cảm ơn Rikker –

14

Như tôi ghét chuyển đổi quy mô vì Tôi thấy nó xấu xí, tôi tìm một giải pháp khác. Vâng, tôi biết nó là một bài cũ và nhiều cách giải quyết tồn tại, nhưng tôi là khá đơn giản, và tôi đã không đọc nó ở nơi khác ngay cả khi có ai đó tìm thấy nó cho chắc chắn. Tôi có thể đọc nó ở đâu đó.
Thay vì hiệu ứng động chiều cao từ X để Auto (đó là bất khả thi), bạn có thể cho chiều cao Auto và animate MaxHeight tài sản:

<MyControl x:Name="ctrlAutoHeight" Height="Auto"> 
    <MyControl.Triggers> 
     <EventTrigger RoutedEvent="myRoutedEvent"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetName="ctrlAutoHeight" Storyboard.TargetProperty="MaxHeight" 
            From="0.0" To="{Binding ElementName=ParentControl, Path=ActualHeight}" 
            Duration="0:0:1" AutoReverse="False"/> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </MyControl.Triggers> 
</MyControl> 
+0

Thực sự thông minh và hoạt động hoàn hảo. –

+0

Tôi chưa thử, nhưng tôi không thấy nó sẽ không hoạt động như thế nào. Khá thông minh. – Kilazur

+2

Tôi biết bây giờ: tôi không biết điều kiện chính xác, nhưng tôi nhận được một InvalidOperationException khi tôi cố gắng để ràng buộc 'To' để MaxHeight cửa sổ của tôi, hoặc để lưới của nó. – Kilazur

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