在鼠标上检索值点击WPF列系列

问题描述:

我有一个包含一年中所有月份的两列系列的简单图表。我想过滤一个列表视图,显示所选月份的详细信息。我可以通过上的MouseDown捕获该事件,但我不确定如何在列系列中获得月份。在鼠标上检索值点击WPF列系列

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

我敢肯定,我可以做一些花哨的WPF数据绑定的列表视图ItemsSource选择ColumnSeries但是这是我的标题:

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 

坐落在一系列IsSelectionEnabled=True并添加一个SelectionChanged事件到同一系列。

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 

坐落在一系列IsSelectionEnabled=True,并添加了SelectionChanged事件同一系列。

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(); 

实施例C#:

设置在该系列中的IsSelectionEnabled=True并增加了一个SelectionChanged事件同一系列。

命名空间:

using System.Windows.Controls.DataVisualization.Charting; 

方法:

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); 
      } 

[在C#] 以前的答案只允许时,点击选择的改变。以下代码将使您可以单击列,而不必单击之前单击的位置。如果需要,它也将允许右击(改变事件类型)

<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 
}