【问题标题】:How to turn off animations in WPF Toolkit charts如何关闭 WPF Toolkit 图表中的动画
【发布时间】:2010-07-28 12:12:08
【问题描述】:

有没有办法直接关闭 Xaml 中的动画?动画真的很慢,因为我的图表有很多点。

【问题讨论】:

    标签: wpf wpftoolkit


    【解决方案1】:

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

    我的想法是,通过改变不同图表系列(图表点,DataPointStyle)的样式来移除动画

    charting:PieDataPoint 的示例

    尝试删除显示数据的动画,并使用给定键采用您自己的样式 (x:key="myStyle" -> DataPointStyle="{StaticResource myStyle}")

    并在<Grid x:Name="Root" Opacity="0"> 处删除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>
    

    编辑

    这是更改后的样式。

    <!--  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();
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2010-11-16
      • 1970-01-01
      • 2016-07-24
      • 2014-03-01
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 2012-02-06
      相关资源
      最近更新 更多