开发者

Retrieve Value on Mouse Click for WPF Column Series

开发者 https://www.devze.com 2023-01-19 06:31 出处:网络
I have a simple chart with two column series containing all months in the year.I want to filter a list view that show detailed information for the selected month.I can capture the event via MouseDown

I have a simple chart with two column series containing all months in the year. I want to filter a list view that show detailed information for the selected month. I can capture the event via MouseDown on the ColumnSeries but I'm not sure how to get to the month in the column series.

<DVC:ColumnSeries Title=" Expenditures" Independ开发者_Python百科entValueBinding="{Binding Path=Month}"
                  DependentValueBinding="{Binding Path=Amt}"
                  ItemsSource="{Binding Path=ActivityExpenditureSeries}"
                  MouseDown="ColumnSeries_MouseDown" />

I'm sure I could do some fancy WPF databinding to the selected ColumnSeries for the listviews ItemsSource but this is where I'm heading:

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


Set the IsSelectionEnabled=True on the series and added a SelectionChanged event to the same series.

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


Set the IsSelectionEnabled=True on the series and added a SelectionChanged event to the same series.

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


Example in C#:

Set the IsSelectionEnabled=True on the series and added a SelectionChanged event to the same series.

Name Space:

using System.Windows.Controls.DataVisualization.Charting;

Method:

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


[In C#] Previous answers only allow clicking when selections are changed. Following code will enable clicking on columns independently of where you clicked earlier. It will also allow right clicking if needed (change event type)

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

精彩评论

暂无评论...
验证码 换一张
取 消