Changement De Silverlight Légende Du Graphique De L'Élément De Mise En Page
Je suis en train de travailler sur la personnalisation de la présentation du Silverlight Toolkit Graphique. J'ai deux exigences:
1) Déplacer la zone de Légende au bas du graphique (résolu).
2) modifier la disposition des éléments à l'intérieur de la légende pour être affiché à côté de l'autre,
c'est à dire. {légende 1},{legend 2},{légende 3}, plutôt que la valeur par défaut de la colonne.
1) a été facile à résoudre avec un ControlTemplate (voir ci-dessous).
2) Comment puis-je changer la disposition des éléments de la légende? Peut-il être fait en plus de la personnalisation du Graphique ControlTemplate, ou ne la Légende a besoin de sa propre ControlTemplate?
Le Tableau lui-même est définie comme:
<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>
ControlTemplate pour déplacer les éléments de légende (basé sur le modèle par défaut) est:
<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>
OriginalL'auteur Ryan | 2009-12-16
Vous devez vous connecter pour publier un commentaire.
Par souci d'exhaustivité, voici la
LegendStyle="{StaticResource BottomLegendLayout}
(outil très utile pour comprendre les styles est le Silverlight Style Par Défaut Du Navigateur)OriginalL'auteur Ryan
Adjonction, à la carte fera l'affaire (à partir de ici):
La question ci-dessus a été répondu à plus de 7 ans... honnêtement, je ne m'en souviens pas. Vous pouvez le vérifier out silverlight.codeplex.com/SourceControl/latest pour le code source. Il peut aider.
OriginalL'auteur Ryan