2010-09-08 87 views
5

当创建新图表并且将一系列(例如ColumnSeries)与数据一起添加时,这些列将呈现为FadeIn动画的一种类型,并在屏幕上绘制图表后出现一秒钟的时间。WPF工具包 - 停用图表动画

是否有反正停止这种动画发生?或者,是否有强制图表在渲染之前完成动画?

保罗

回答

1

我已经下载了最新的源代码在http://wpf.codeplex.com/SourceControl/list/changesets

我的想法是,通过改变风格不同的图表系列删除动画(图点,DataPointStyle)

例子对于charting:PieDataPoint

尝试删除所示数据的动画,并使用给定键(x:key =“myStyle” - >DataPointStyle="{StaticResource myStyle}"

,并在<Grid x:Name="Root" Opacity="0">

删除该可视状态组来自你的风采

<VisualStateGroup x:Name="RevealStates"> 
    <VisualStateGroup.Transitions> 
     <VisualTransition GeneratedDuration="0:0:0.5" /> 
    </VisualStateGroup.Transitions> 
    <VisualState x:Name="Shown"> 
     <Storyboard> 
      <DoubleAnimation Storyboard.TargetName="Root" Storyboard.TargetProperty="Opacity" To="1" Duration="0" /> 
     </Storyboard> 
    </VisualState> 
    <VisualState x:Name="Hidden"> 
     <Storyboard> 
      <DoubleAnimation Storyboard.TargetName="Root" Storyboard.TargetProperty="Opacity" To="0" Duration="0" /> 
     </Storyboard> 
    </VisualState> 
</VisualStateGroup> 

编辑

这是改变的样式删除Opacity="0"

<!-- charting:PieDataPoint --> 
<Style TargetType="charting:PieDataPoint"> 
    <Setter Property="Background" Value="Orange" /> 
    <Setter Property="BorderBrush" Value="White" /> 
    <Setter Property="BorderThickness" Value="1" /> 
    <Setter Property="IsTabStop" Value="False" /> 
    <Setter Property="RatioStringFormat" Value="{}{0:p2}" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="charting:PieDataPoint"> 
       <Grid x:Name="Root" Opacity="0"> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="CommonStates"> 
          <VisualStateGroup.Transitions> 
           <VisualTransition GeneratedDuration="0:0:0.1" /> 
          </VisualStateGroup.Transitions> 
          <VisualState x:Name="Normal" /> 
          <VisualState x:Name="MouseOver"> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetName="MouseOverHighlight" Storyboard.TargetProperty="Opacity" To="0.6" Duration="0" /> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
         <VisualStateGroup x:Name="SelectionStates"> 
          <VisualStateGroup.Transitions> 
           <VisualTransition GeneratedDuration="0:0:0.1" /> 
          </VisualStateGroup.Transitions> 
          <VisualState x:Name="Unselected" /> 
          <VisualState x:Name="Selected"> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetName="SelectionHighlight" Storyboard.TargetProperty="Opacity" To="0.6" Duration="0" /> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <Path x:Name="Slice" Data="{TemplateBinding Geometry}" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding BorderBrush}" StrokeMiterLimit="1"> 
         <ToolTipService.ToolTip> 
          <StackPanel> 
           <ContentControl Content="{TemplateBinding FormattedDependentValue}" /> 
           <ContentControl Content="{TemplateBinding FormattedRatio}" /> 
          </StackPanel> 
         </ToolTipService.ToolTip> 
        </Path> 
        <Path x:Name="SelectionHighlight" Data="{TemplateBinding GeometrySelection}" Fill="Red" StrokeMiterLimit="1" IsHitTestVisible="False" Opacity="0" /> 
        <Path x:Name="MouseOverHighlight" Data="{TemplateBinding GeometryHighlight}" Fill="White" StrokeMiterLimit="1" IsHitTestVisible="False" Opacity="0" /> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

我第一次尝试删除动画后,我想放弃,因为它没有奏效。

但后来我用反射器查看源代码,发现它仍然有效。

设置DataPointStyle不幸是不够的,我认为这是一个错误。

<chartingToolkit:Chart Margin="8"> 

    <chartingToolkit:Chart.Series> 
    <chartingToolkit:BarSeries x:Name="barSeries" 
           Title="Experience" 
           DataPointStyle="{StaticResource myBarStyle}"> 
    </chartingToolkit:BarSeries> 
    </chartingToolkit:Chart.Series> 

</chartingToolkit:Chart> 

在包含图表的控件的构造函数中,只需执行以下操作。

this.barSeries.RefreshStyles(); 

希望这有助于