如何关闭 WPF Toolkit 图表中的动画 [英] How to turn off animations in WPF Toolkit charts

查看:18
本文介绍了如何关闭 WPF Toolkit 图表中的动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Is there a way to turn off the animations in Xaml directly? The animations are really sluggish as my chart has many points.

推荐答案

我已经在 http://wpf.codeplex.com/SourceControl/list/changesets

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

my idea is, to remove the animation by changing the style for the different chart series (chart points, DataPointStyle)

charting:PieDataPoint 的示例

尝试移除显示数据的动画并使用给定的键(x:key="myStyle" -> DataPointStyle="{StaticResource myStyle}")

try to remove the animation for the shown data and take your own style with a given key (x:key="myStyle" -> DataPointStyle="{StaticResource myStyle}")

并删除

从您的样式中删除此视觉状态组

remove this visual state group from your style

<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>

在我第一次尝试删除动画后,我想放弃,因为它不起作用.

After my first attempt to remove the animation, I wanted to give up, because it has not worked.

但后来我查看了源代码的反射器,并找到了一种仍然有效的方法.

But then I looked upon me with the reflector to the source code and have found a way that it still works.

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

Setting the DataPointStyle unfortunately is not enough, I think it's a bug.

<chartingToolkit:Chart Margin="8">

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

</chartingToolkit:Chart>

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

In the constructor of the control where the chart is included simply execute the following.

this.barSeries.RefreshStyles();

希望能帮到你

这篇关于如何关闭 WPF Toolkit 图表中的动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆