2010-02-05 5 views
5

Me gustaría eliminar los marcadores de punto de datos de una serie de líneas en mi gráfico de Silverlight. La única forma que encontré en la web es establecer VisibilityProperty en Contraer.Eliminar (colapsar) DataPoints en un LineSeries?

// no funciona en la versión actual del kit de herramientas de SL var collapseDataPointSetter = new Setter (propiedad Control.Visibility, Visibility.Collapsed);

Pero esto no funciona para la versión actual del kit de herramientas SL. ¿Cómo puedo eliminar u ocultar DataPoint Markers en la versión actual?

Respuesta

10

Pantarhei,

Utilice los siguientes estilos de gráficos (con plantillas referenciadas) para ocultar los puntos de datos. He incluido estilos tanto para LineSeries como para AreaSeries.

Buena suerte, 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

Gracias. Lo intentaré Pero parece ser lo que estoy buscando. – pantarhei

+0

Funciona como un encanto en WPF también ... Muchas gracias. – sprite

+0

Muchas gracias @Jim por el código anterior. Sin embargo, una cosa que me falta con este enfoque es que el color de línea en LineSeries se corrige con el valor de Fondo establecido en el estilo LineDataPoint para todas las series de un gráfico. Eliminar el colocador de fondo tampoco ayuda, solo es un color de corrección diferente. ¿Hay alguna manera de que los colores de línea sean automáticamente diferentes para diferentes series de líneas con el enfoque anterior? –

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

Me funcionó a la perfección. – vijaykumar

4

Hacerlo con estilos en mi opinión no es el mejor enfoque, ya que todavía tienen una enorme cantidad de elementos visuales cuando también tiene una gran cantidad de puntos de datos como en un gráfico de cotizaciones.

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

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

Hacerlo de esta manera usted tiene casi cinco veces menos que cuando las representaciones visuales que acaba de establecer un cierto estilo.

+0

Esta es una solución fácil en comparación con tocar XAML. – Sid

3

Utilicé la solución de Jim (muchas gracias, por cierto, ENORME ayuda) y la apliqué a la plantilla de gráfico predeterminada.

En el área de la paleta, tiene el diccionario de recursos para cada línea de la serie.

Así es como yo era capaz de deshacerse de él utilizando plantilla de control de Jim, y puedo ponerlo en cada ResourceDictonary así que no tengo que hacerlo línea por línea

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

Esto funcionó para mí por lo menos, y me va a ahorrar mucho tiempo (y ya ha guardado mucho de mi pelo antes de lo sacó)

Cuestiones relacionadas