2010-10-05 4 views
0

J'ai un graphique simple avec deux séries de colonnes contenant tous les mois de l'année. Je souhaite filtrer une vue de liste qui affiche des informations détaillées pour le mois sélectionné. Je peux capturer l'événement via MouseDown sur le ColumnSeries mais je ne suis pas sûr de savoir comment se rendre au mois dans la série de colonnes.Récupérer la valeur sur la souris Cliquez pour la série de colonnes WPF

<DVC:ColumnSeries Title=" Expenditures" IndependentValueBinding="{Binding Path=Month}" 
        DependentValueBinding="{Binding Path=Amt}" 
        ItemsSource="{Binding Path=ActivityExpenditureSeries}" 
        MouseDown="ColumnSeries_MouseDown" /> 

Je suis sûr que je pourrais faire un peu de fantaisie à la WPF databinding ColumnSeries sélectionné pour les listviews ItemsSource mais c'est là où je me dirige:

Private Sub ColumnSeries_MouseDown(ByVal sender As System.Object, 
            ByVal e As System.Windows.Input.MouseButtonEventArgs) 
    ' This is the functionality I'm looking for... 
    Dim selectedColumn As String 
    FilterListView(selectedColumn) 
End Sub 

Répondre

4

Réglez le IsSelectionEnabled=True sur la série et ajouté un événement SelectionChanged à la même série.

Private Sub colSeries_adjExpenditure_SelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) 
     Dim cs As ColumnSeries = CType(sender, ColumnSeries) 
     Dim dp As MyDataPoint = CType(cs.SelectedItem, MyDataPoint) 
End Sub 
0

Réglez le IsSelectionEnabled=True sur la série et a ajouté un événement SelectionChanged à la même série.

System.Windows.Controls.DataVisualization.Charting.ColumnSeries cs = (System.Windows.Controls.DataVisualization.Charting.ColumnSeries)sender; 
System.Data.DataRowView dp = (System.Data.DataRowView)cs.SelectedItem; 
tbkName.Text = dp.Row[1].ToString(); 
tbkSalary.Text = dp.Row[0].ToString(); 
0

Exemple en C#:

Réglez le IsSelectionEnabled=True sur la série et a ajouté un événement SelectionChanged à la même série.

Nom Espace:

using System.Windows.Controls.DataVisualization.Charting; 

Méthode:

private void ColumnSeries_SelectionChanged(object sender, SelectionChangedEventArgs e) 
      { 
       ColumnSeries cs = (ColumnSeries)sender; 
       KeyValuePair<string, int> kv = (KeyValuePair<string, int>)cs.SelectedItem; 

       Debug.WriteLine(kv.Key); 
       Debug.WriteLine(kv.Value); 
      } 
0

[En C#] réponses précédentes ne permettent cliquer lorsque les sélections sont modifiées. Le code suivant permettra de cliquer sur les colonnes indépendamment de l'endroit où vous avez cliqué précédemment. Il permettra également de cliquer avec le bouton droit si nécessaire (changer le type d'événement)

<chartingToolkit:ColumnSeries DependentValuePath="Value" IndependentValuePath="Key" IsSelectionEnabled="True"> 
<chartingToolkit:ColumnSeries.DataPointStyle> 
    <Style TargetType="chartingToolkit:ColumnDataPoint"> 
     <EventSetter Event="MouseLeftButtonUp" Handler="ColumnSeries_ColumnLeftClicked"/> 
    </Style> 
</chartingToolkit:ColumnSeries.DataPointStyle> 
</chartingToolkit:ColumnSeries> 

private void ColumnSeries_ColumnLeftClicked(object sender, MouseButtonEventArgs e) 
{ 
    var key = ((ColumnDataPoint)sender).IndependentValue; 
    //etc 
} 
Questions connexes