2017-08-09 58 views
1

我需要通过点击一个按钮来改变列的宽度,并且这种改变应该是缓慢的并且是动画的。如何在wpf中改变ColumnDefinition宽度?

<Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" x:Name="Col1"/> 
      <ColumnDefinition Width="2*" /> 
     </Grid.ColumnDefinitions> 

     <Button >change Width Col1</Button> 
    </Grid> 

回答

1

试试这个:

的XAML:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" x:Name="Col1"/> 
     <ColumnDefinition Width="2*" /> 
    </Grid.ColumnDefinitions> 

    <Button Click="Button_Click">change Width Col1</Button> 
</Grid> 

代码背后:

private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     Storyboard storyboard = new Storyboard(); 

     Duration duration = new Duration(TimeSpan.FromMilliseconds(2000)); 
     CubicEase ease = new CubicEase { EasingMode = EasingMode.EaseOut }; 

     DoubleAnimation animation = new DoubleAnimation(); 
     animation.EasingFunction = ease; 
     animation.Duration = duration; 
     storyboard.Children.Add(animation); 
     animation.From = 1000; 
     animation.To = 0;    
     Storyboard.SetTarget(animation, Col1); 
     Storyboard.SetTargetProperty(animation, new PropertyPath("(ColumnDefinition.MaxWidth)")); 

     storyboard.Begin(); 
    } 
+1

谢谢。正常工作 –

+0

问一个问题,如何开始“*”? –

+0

你可以使用列的ActualWidth – tabby