2010-09-08 49 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(); 

希望這有助於