在鼠标上检索值点击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
}