2010-04-04 72 views
0

我是新来的Silverlight和WPF编程WPF故事板对象访问

我刚刚创建Silverlight中一个简单的故事板增加一个按钮的高度和宽度。

正如我想的那样,我写了这段代码,以便每当我将光标移动到按钮故事板上时。

这里是用于silverlight的代码。

private void button_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    if(Storyboard1.GetCurrentState()!=ClockState.Active) 
     Storyboard1.Begin(); 
} 

就我使用silverlight而言,在上述场景中一切都很好。

但现在我想在WPF中使用相同的功能。

但我面临的问题是,在WPF按钮单击事件处理程序我无法访问Storyboard1对象。

请帮助我访问事件处理程序中的故事板对象。

+0

你能告诉我们你的XAML? – slugster 2010-04-04 12:36:15

回答

2

在WPF中,你不需要代码来做这种动画;它可以在XAML中完成。例如:

<Button> 
     <Button.Style> 
      <Style TargetType="Button"> 
       <Setter Property="Width" Value="50" /> 
       <Setter Property="Height" Value="20" /> 
       <Style.Triggers> 
        <EventTrigger RoutedEvent="MouseEnter"> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Width" To="100" /> 
           <DoubleAnimation Storyboard.TargetProperty="Height" To="40" /> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
        <EventTrigger RoutedEvent="MouseLeave"> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Width" To="50" /> 
           <DoubleAnimation Storyboard.TargetProperty="Height" To="20" /> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
       </Style.Triggers> 
      </Style> 
     </Button.Style> 
    </Button> 

实际上,因为这一切都在风格,让您可以轻松地将此动画多个按钮不重复的代码:

<Window.Resources> 
    <Style x:Key="myGrowingButton" TargetType="Button"> 
     ... 
    </Style> 
</Window.Resources> 
... 
    <Button Style="{StaticResource myGrowingButton}">Button1</Button> 
    <Button Style="{StaticResource myGrowingButton}">Button2</Button> 
...