2010-02-05 8 views
5

Je voudrais supprimer les marqueurs de point de données d'une LineSeries dans mon graphique Silverlight. Le seul moyen que j'ai trouvé sur le web est de définir le VisibilityProperty à réduire. // ne fonctionne pas dans la version actuelle de la boîte à outils SL. var collapseDataPointSetter = new Setter (Control.VisibilityProperty, Visibility.Collapsed);Suppression (effondrement) de points de données dans une LineSeries?

Mais cela ne fonctionne pas pour la version actuelle de la boîte à outils SL. Comment puis-je supprimer ou masquer les marqueurs DataPoint dans la version actuelle?

Répondre

10

pantarhei,

Les styles de graphique ci-dessous (avec des modèles référencés) pour masquer les points de données. J'ai inclus des styles pour LineSeries et AreaSeries.

Bonne chance, Jim

<ControlTemplate x:Key="CommonAreaSeriesDataPointTemplate" TargetType="charting:AreaDataPoint"> 
    <!--Comment out data points from the default template; just an empty template--> 
    <Grid x:Name="Root" Opacity="1"> 
     <!--<ToolTipService.ToolTip> 
      <StackPanel Margin="2,2,2,2"> 
       <ContentControl Content="{TemplateBinding FormattedDependentValue}" /> 
       <ContentControl Content="{TemplateBinding FormattedIndependentValue}" /> 
      </StackPanel> 
     </ToolTipService.ToolTip> 
     <Ellipse StrokeThickness="{TemplateBinding BorderThickness}" Stroke="{TemplateBinding BorderBrush}" Fill="{TemplateBinding Background}" />--> 
    </Grid> 
</ControlTemplate> 
<Style x:Key="CommonAreaSeriesDataPoint" TargetType="charting:AreaDataPoint"> 
    <Setter Property="Background" Value="{StaticResource CommonAreaSeriesBackground}" /> 
    <Setter Property="Template" Value="{StaticResource CommonAreaSeriesDataPointTemplate}" /> 
</Style> 
<Style x:Key="CommonAreaSeriesPath" TargetType="Path"> 
    <Setter Property="StrokeThickness" Value="1" /> 
    <Setter Property="Stroke" Value="DarkGray" /> 
    <Setter Property="Effect" Value="{StaticResource DialogDropShadow}" /> 
</Style> 
<ControlTemplate x:Key="CommonLineSeriesDataPointTemplate" TargetType="charting:LineDataPoint"> 
    <!--Comment out data points from the default template; just an empty template--> 
    <Grid x:Name="Root" Opacity="1"> 
     <!--<ToolTipService.ToolTip> 
      <StackPanel Margin="2,2,2,2"> 
       <ContentControl Content="{TemplateBinding FormattedDependentValue}" /> 
       <ContentControl Content="{TemplateBinding FormattedIndependentValue}" />--> 
     <!--Example of how to access the bound business object--> 
     <!--<ContentControl Content="{Binding Amount}" DataContext="{TemplateBinding DataContext}" />--> 
     <!--</StackPanel> 
     </ToolTipService.ToolTip>--> 
     <!--<Ellipse StrokeThickness="{TemplateBinding BorderThickness}" Stroke="{TemplateBinding BorderBrush}" Fill="{TemplateBinding Background}" />--> 
    </Grid> 
</ControlTemplate> 
<Style x:Key="CommonLineSeriesDataPoint" TargetType="charting:LineDataPoint"> 
    <Setter Property="IndependentValueStringFormat" Value="{}{0:yyyy}" /> 
    <Setter Property="DependentValueStringFormat" Value="{}{0:c0}" /> 
    <Setter Property="Background" Value="#FF0077CC" /> 
    <Setter Property="BorderBrush" Value="White" /> 
    <Setter Property="BorderThickness" Value="2" /> 
    <Setter Property="IsTabStop" Value="False" /> 
    <Setter Property="Template" Value="{StaticResource CommonLineSeriesDataPointTemplate}" /> 
</Style> 
<Style x:Key="CommonLineSeriesPolyline" TargetType="Polyline"> 
    <Setter Property="StrokeThickness" Value="5" /> 
    <Setter Property="Effect" Value="{StaticResource DialogDropShadow}" /> 
</Style> 
<!-- Implicit non-Key'd Styles BasedOn Common Explicit Key'd Styles above --> 
<Style TargetType="charting:AreaSeries"> 
    <Setter Property="DataPointStyle" Value="{StaticResource CommonAreaSeriesDataPoint}" /> 
    <Setter Property="PathStyle" Value="{StaticResource CommonAreaSeriesPath}" /> 
</Style> 
<Style TargetType="charting:LineSeries"> 
    <Setter Property="DataPointStyle" Value="{StaticResource CommonLineSeriesDataPoint}" /> 
    <Setter Property="PolylineStyle" Value="{StaticResource CommonLineSeriesPolyline}" /> 
</Style> 
+0

Merci. Je vais essayer. Mais semble être ce que je cherche. – pantarhei

+0

Fonctionne comme un charme dans WPF aussi ... Merci beaucoup. – sprite

+0

Merci beaucoup @Jim pour le code ci-dessus. Une chose qui me manque cependant dans cette approche, c'est que la couleur de ligne dans LineSeries devient corrigée par la valeur Background définie dans le style LineDataPoint pour toutes les séries d'un graphique. Supprimer le setter d'arrière-plan n'aide pas non plus, il ne s'agit que d'une couleur de correction différente. Existe-t-il un moyen pour que les couleurs de ligne soient automatiquement différentes pour différentes séries de lignes avec l'approche ci-dessus? –

1
<charting:LineSeries.DataPointStyle> 
          <Style TargetType="charting:LineDataPoint"> 
           <Setter Property="Visibility" Value="Collapsed"/> 
           <Setter Property="Background" Value="violet"/> 
           <Setter Property="Opacity" Value="0" /> 
          </Style> 
         </charting:LineSeries.DataPointStyle> 

+0

Cela m'a parfaitement fonctionné. – vijaykumar

4

le faire avec des styles à mon avis est pas la meilleure approche parce que vous avez encore une énorme quantité de visuels lorsque vous avez aussi beaucoup de datapoints comme dans un graphique boursier.

public class LineSeriesEx : LineSeries 
{ 
    protected override DataPoint CreateDataPoint() 
    { 
     return new EmptyDataPoint(); 
    } 
} 

public class EmptyDataPoint : DataPoint 
{ 
    // As the method name says, this DataPoint is empty. 
} 

De cette façon, vous avez presque cinq fois moins de Visuels que lorsque vous venez de définir un style.

+0

Ceci est une solution facile par rapport à toucher XAML. – Sid

3

J'ai utilisé la solution de Jim (merci beaucoup d'ailleurs, ÉNORME aide là-bas) et l'ai appliqué au modèle de graphique par défaut.

Dans la zone de la palette, vous disposez du dictionnaire de ressources pour chaque ligne de la série.

Voici comment j'ai pu se débarrasser de lui en utilisant le modèle de contrôle de Jim, et je peux le mettre dans chaque ResourceDictonary donc je ne en ligne

<toolkit:ResourceDictionaryCollection> 
<ResourceDictionary> 
<!-- I wanted a solid color brush so I just went ahead and defined it in the palette--> 
<SolidColorBrush x:Key="Background" Color="Green"/> 
<Style x:Key="DataPointStyle" TargetType="Control"> 
<Setter Property="Background" Value="{StaticResource Background}"/> 
<!-- below is where I entered Jim's control template into the default palette defined--> 
<Setter Property="Template"> 
<ControlTemplate TargetType="charting:LineDataPoint"> 
<Grid x:Name="Root" Opacity="1"/> 
</ControlTemplate> 
</Setter.Value> 
</Setter> 
</Style> 
</ResourceDictionary> 
</toolkit:ResourceDictionaryCollection> 

ai pas de le faire en ligne Cela a fonctionné pour moi au moins, et cela me sauvera beaucoup de temps (et a déjà sauvé beaucoup de mes cheveux avant que je l'ai sorti)