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

时间:2010-10-05 16:55:09

标签: wpf charts mouseevent

我有一个简单的图表,其中包含两个列系列,其中包含一年中的所有月份。我想过滤列表视图,显示所选月份的详细信息。我可以通过MouseDown上的ColumnSeries来捕捉活动,但我不确定如何进入列系列中的月份。

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

我确信我可以为列表视图ColumnSeries选择ItemsSource做一些花哨的WPF数据绑定,但这就是我要去的地方:

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

4 个答案:

答案 0 :(得分:4)

在系列中设置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

答案 1 :(得分:0)

在系列中设置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();

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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