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.

È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top