Silverlight 3 Toolkit Creazione di grafici: Come visualizzare il valore nella barra?
-
20-09-2019 - |
Domanda
Silverlight 3 toolkit grafici è impressionante. Sto usando BarSeries e Silverlight è mostrando la lunghezza della barra proporzionale al valore vincolato. Ma esiste un modo per ottenere il valore reale sulla barra o semplicemente accanto al bar? Ecco il mio XAML
<chartingToolkit:Chart
Grid.Column="1"
x:Name="chartEnvironmentStatusGlobal"
Title="Environment Status">
<chartingToolkit:BarSeries
x:Name="chartEnvironmentStatus"
Title="Pass"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Green"
IndependentValueBinding="{Binding Path=Instance}"
DependentValueBinding="{Binding Path=Count}"
AnimationSequence="LastToFirst">
</chartingToolkit:BarSeries>
<chartingToolkit:BarSeries
x:Name="chartEnvironmentStatus1"
Title="Fail"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Red"
IndependentValueBinding="{Binding Path=Instance}"
DependentValueBinding="{Binding Path=Count}"
AnimationSequence="LastToFirst">
</chartingToolkit:BarSeries>
</chartingToolkit:Chart>
Grazie in anticipo.
Soluzione
Sarà necessario creare un nuovo modello per il BarDataPoint. Non vi posterò l'intero template qui perché a) è abbastanza grande e b) non sono sicuro dove mi trovo sul diritto d'autore.
È possibile ottenere il modello esistente abbastanza facilmente se si dispone di fondere si dovrebbe essere in grado di creare una copia con lo strumento. In alternativa si può ottenere dal codice sorgente la sua trovata in: -
#someSourceCodeRootFolder\Controls.DataVisualization.Toolkit\Charting\DataPoint\BarDataPoint.xaml
In un dizionario risorse creare questa: -
<Style x:Key="BarDataPointWithContent" TargetType="charting:BarDataPoint">
<Setter Property="Template">
<Setter.Value>
<Border ... copy from original template... >
<!-- Wads of original VisualStateManager stuff here -->
<Grid Background="{TemplateBinding Background}">
<!-- Original set of Rectangles and Border here -->
<TextBlock Text="{TemplateBinding FormattedDependentValue}"
HorizontalAlignment="Center" />
</Grid>
<ToolTipService.ToolTip>
<!-- Do something different here perhaps -->
</ToolTipService.ToolTip>
</Border>
</Setter.Value>
</Setter>
</Style>
In pratica quello che ho fatto si aggiunge che TextBlock
finale e legato alla stessa proprietà FormattedDependentValue
che la descrizione comandi utilizza nella sua ContentControl. Si potrebbe aggiungere ulteriori styling per TextBlock per ottenere l'aspetto che si desidera, si può anche voler fare qualcosa di diverso con il contenuto punta dell'utensile.
Quindi, con questo stile appeso su di voi può fare questo nel grafico stesso: -
<chartingToolkit:BarSeries.DataPointStyle>
<Style TargetType="BarDataPoint" BasedOn="{StaticResouce BarDataPointWithContent}" >
<Setter Property="Background" Value="Red" />
</Style>
</chartingToolkit:BarSeries.DataPointStyle>
Nota a MSofties agguato
Per favore, puoi aggiungere i modelli alla documentazione da qualche parte in modo che non abbiamo bisogno di codice sorgente, si fondono o Reflector per estrarli?