Ändern Sie das Layout der Silverlight-Diagrammlegendenelemente

Ich arbeite daran, das Layout eines Silverlight Toolkit-Diagramms anzupassen. Ich habe zwei Anforderungen:

1) Verschieben Sie den Legendenbereich an den unteren Rand des Diagramms (gelöst).

2) Ändern Sie das Layout der Elemente in der Legende, die nebeneinander angezeigt werden sollen, d. H. {legend 1}, {legend 2}, {legend 3} und nicht das Standardspaltenformat.


1) war einfach mit einem ControlTemplate zu lösen (siehe unten).

2) Wie ändere ich das Layout von Legendenelementen? Kann dies durch weitere Anpassung der ControlTemplate des Diagramms geschehen, oder benötigt die Legende eine eigene ControlTemplate?

Das Diagramm selbst ist definiert als:

<chartingToolkit:Chart Name="chartCompareMain" 
                       Template="{StaticResource ChartLayoutLegendBottom}">
        <chartingToolkit:Chart.Axes>
             <chartingToolkit:DateTimeAxis Orientation="X" 
                        AxisLabelStyle="{StaticResource ChartDateFormat}">
             </chartingToolkit:DateTimeAxis>
             <chartingToolkit:LinearAxis  Orientation="Y"/>
        </chartingToolkit:Chart.Axes>
</chartingToolkit:Chart>    

Das ControlTemplate zum Verschieben der Legendenelemente (basierend auf der Standardvorlage) lautet:

<ControlTemplate x:Key="ChartLayoutLegendBottom" TargetType="chartingToolkit:Chart">
        <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <dataviz:Title Grid.Row="0" Content="{TemplateBinding Title}" Style="{TemplateBinding TitleStyle}" />
                <Grid Grid.Row="1" Margin="0,15,0,15">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <chartingprimitives:EdgePanel x:Name="ChartArea" Style="{TemplateBinding ChartAreaStyle}" Grid.Column="0" >
                        <Grid Canvas.ZIndex="-1" Style="{TemplateBinding PlotAreaStyle}" />
                        <Border Canvas.ZIndex="10" BorderBrush="#FF919191" BorderThickness="1" />
                    </chartingprimitives:EdgePanel>
                </Grid>
                <dataviz:Legend x:Name="Legend" Header="{TemplateBinding LegendTitle}" Style="{TemplateBinding LegendStyle}" Grid.Row="2"/>
            </Grid>
        </Border>
    </ControlTemplate>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage