2011-07-22 23 views
2

我正在使用WPF Toolkit繪製折線圖(我們應用程序中的一個功能)。給定一個集合,我可以繪製圖形,但是,當用戶雙擊圖表上的DataPoint時,我發現很難獲取X和Y數據值(而不是線圖中的座標值) )。在WPF LineSeries上添加事件DataPoint

我能夠使用DataPointStyle設置屬性,但無法將事件添加到它。

如果我在LineSeries節點上使用MouseDoubleClick="lineChart_ShowResults_DoubleClick"屬性,則它會在用戶單擊任何點時觸發事件。但是,如果用戶單擊DataPoint,我需要觸發事件只有。以下是我試圖實施的XAML。請幫忙。

<Window x:Class="TeamXXX.YYYUI.GraphicalDisplay" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="GraphicalDisplay" Height="400" Width="600" xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="439" d:DesignWidth="654" SizeToContent="WidthAndHeight"> 
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
    <Grid MinHeight="360" MinWidth="575" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <chartingToolkit:Chart Name="lineChart" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
      <chartingToolkit:Chart.LegendStyle> 
       <Style TargetType="Control"> 
        <Setter Property="Height" Value="0" /> 
        <Setter Property="Width" Value="0" /> 
       </Style> 
      </chartingToolkit:Chart.LegendStyle> 
      <chartingToolkit:LineSeries DependentValuePath="Value" Name="lineSeries" IndependentValuePath="Key" ItemsSource="{Binding}" IsSelectionEnabled="True" MouseDoubleClick="lineChart_ShowResults_DoubleClick"> 

       <!--<chartingToolkit:LineSeries.DataPointStyle> 
        <Style x:Uid="CommonLineSeriesDataPoint" TargetType="chartingToolkit:LineDataPoint"> 
         <Setter Property="" Property="lineChart_ShowResults_DoubleClick"/> 
        </Style> 
       </chartingToolkit:LineSeries.DataPointStyle>--> 

       <chartingToolkit:LineSeries.DependentRangeAxis> 
        <chartingToolkit:LinearAxis Orientation="Y" Title="Cost in minutes" FontSize="16" /> 
       </chartingToolkit:LineSeries.DependentRangeAxis> 
       <chartingToolkit:LineSeries.IndependentAxis> 
        <chartingToolkit:LinearAxis Orientation="X" Title="Fold" FontSize="16" /> 
       </chartingToolkit:LineSeries.IndependentAxis> 
      </chartingToolkit:LineSeries> 
     </chartingToolkit:Chart> 
    </Grid> 
</ScrollViewer> 
</Window> 

回答

3

正如你所說,事件觸發點擊任何點,因爲事件被分配給LineSeries。在這條線(從您的文章)

<chartingToolkit:LineSeries DependentValuePath="Value" Name="lineSeries" IndependentValuePath="Key" ItemsSource="{Binding}" IsSelectionEnabled="True" MouseDoubleClick="lineChart_ShowResults_DoubleClick"> 

你是在正確的道路通過進入LineSeries.DataPointStyle但我相信,你應該定義一個事件制定者,而不是制定者。 像這樣:

<chartingToolkit:LineSeries.DataPointStyle> 
    <Style> 
     <EventSetter> 
      <EventSetter Event="Control.MouseDoubleClick" Handler="lineChart_ShowResults_DoubleClick"/>  
     </EventSetter>  
    </Style> </chartingToolkit:LineSeries.DataPointStyle> 
</chartingToolkit:LineSeries.DataPointStyle> 

很顯然刪除事件處理上檢測LineSeries。

我沒有試過,讓我知道它是否可以工作

+0

This Works!上述代碼的唯一更改是使用Control.MouseDoubleClick,而不是僅使用MouseDoubleClick。 – Shankar

+0

非常感謝。順便問一下,你能讓我知道如何處理這個事件嗎?我的意思是我需要數據點的X和Y值,但是當我使用event.GetPosition(lineSeries)時,我得到的是相對於lineSeries的值而不是數據值。請幫助 – Shankar

+1

想出它..它(int)(發件人爲DataPoint).IndependentValue :) – Shankar