If I have a large number of series (or data points in a single pie series), the legend gets cut off. I tried to template the chart to put a ScrollViewer around the LegendPanel, but that didn't work since the XamWebChart.cs code adds the LegendPanel to its RootElement, so I get this:
XamWebChart Warning: Element is already the child of another element
This was my template (which I applied in code behind):
<ControlTemplate TargetType="igChart:XamWebChart"> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <Grid x:Name="RootElement" Background="{TemplateBinding Background}" Margin="{TemplateBinding Padding}" > <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto" MaxWidth="200"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid x:Name="CaptionPanel" Grid.Row="0" Grid.ColumnSpan="2" Grid.Column="0"/> <Grid x:Name="ScenePanel" Grid.Column="0" Grid.Row="1"/> <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Grid.Column="1" Grid.Row="1" > <Grid x:Name="LegendPanel" Grid.Column="1" Grid.Row="1" /> </ScrollViewer> <!--<igChart:Legend x:Name="LegendPanel" Grid.Column="1" Grid.Row="1" MaxWidth="200"/>--> </Grid> </Border></ControlTemplate>
Is there any way to get some sort of scrolling in the legend so I can see all the items in a pie series (even beyond 50 or so gets cut off depending on the control size)?
Thanks,Keith
Thanks David, but that doesn't seem to work for me. If I comment the Legend Style below, it shows as expected. With the style, I see the srollviewer, but nothing inside of it.
I'm using Infragistics.Silverlight.DataVisualization.Chart.v9.1 Version: 9.1.20091.1000
<igChart:XamWebChart x:Name="XamWebChart1"> <igChart:XamWebChart.Legend> <igChart:Legend> <igChart:Legend.Style> <Style TargetType="igChart:Legend"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="igChart:Legend"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <ScrollViewer Height="200"> <ContentPresenter Height="300"/> </ScrollViewer> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </igChart:Legend.Style> </igChart:Legend> </igChart:XamWebChart.Legend> <igChart:XamWebChart.Series> <igChart:Series ChartType="Column" Label="Series 1"> <igChart:Series.DataPoints> <igChart:DataPoint Value="10" Label="point1" /> <igChart:DataPoint Value="20" Label="point2" /> <igChart:DataPoint Value="30" Label="point3" /> </igChart:Series.DataPoints> </igChart:Series> </igChart:XamWebChart.Series></igChart:XamWebChart>
Am I missing something?Thanks,Keith
you can put a ScrollViewer in the Legend Template like this:
<igChart:XamChart.Legend> <igChart:Legend> <igChart:Legend.Style> <Style TargetType="{x:Type igChart:Legend}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type igChart:Legend}"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <ScrollViewer Height="50"> <ContentPresenter Height="100"/> </ScrollViewer> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </igChart:Legend.Style> </igChart:Legend> </igChart:XamChart.Legend>