2010-09-08 16 views
5

जब कोई नया चार्ट बनाया जाता है और एक श्रृंखला (उदाहरण के लिए कॉलम श्रृंखला) डेटा के साथ जोड़ा जाता है तो स्तंभों को फ़ेडइन एनीमेशन के प्रकार के रूप में प्रस्तुत किया जाता है और स्क्रीन पर चार्ट खींचा जाने के बाद एक विभाजित दूसरा दिखाई देता है ।डब्ल्यूपीएफ टूलकिट - चार्ट एनीमेशन को निष्क्रिय करें

क्या इस एनीमेशन को रोकने के लिए वैसे भी है? वैकल्पिक रूप से, क्या प्रस्तुति से पहले एनिमेशन को पूर्ण करने के लिए चार्ट को मजबूर करना है?

पॉल

उत्तर

1

मैं http://wpf.codeplex.com/SourceControl/list/changesets

मेरा विचार है, अलग अलग चार्ट श्रृंखला के लिए शैली बदलकर एनीमेशन दूर करने के लिए (चार्ट अंक, DataPointStyle)

उदाहरण पर नवीनतम स्रोत कोड डाउनलोड किया है charting:PieDataPoint

दिखाए गए डेटा के लिए एनीमेशन को हटाने का प्रयास करें और अपनी शैली को किसी दिए गए कुंजी के साथ ले जाएं (x: key = "myStyle" ->DataPointStyle="{StaticResource myStyle}")

और अपनी शैली

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

संपादित

इस बदली हुई शैली है से <Grid x:Name="Root" Opacity="0">

निकालें इस दृश्य राज्य समूह पर 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> 

एनीमेशन को हटाने के अपने पहले प्रयास के बाद, मैं हारना चाहता था, क्योंकि यह काम नहीं कर रहा है।

लेकिन फिर मैंने मुझे स्रोत कोड के प्रति परावर्तक के साथ देखा और यह एक तरीका मिला है कि यह अभी भी काम करता है।

दुर्भाग्यवश डेटापॉइंट स्टाइल सेट करना पर्याप्त नहीं है, मुझे लगता है कि यह एक बग है।

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

आशा है कि यह मदद करता है

संबंधित मुद्दे