2011-07-22 13 views
2

私はWPF Toolkitを使用して折れ線グラフ(アプリケーション上の機能)を描画しています。グラフをプロットすることはできますが、ユーザーがグラフ上のDataPointをダブルクリックすると、XとYのデータ値を得ることが難しくなります(線グラフのCo-Ordinate値ではありません)。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

を動作するかどうか私に教えて!上記のコードの唯一の変更は、MouseDoubleClickではなくControl.MouseDoubleClickを使用することです。 – Shankar

+0

ありがとうございました。ところで、私はイベントをどのように処理するか教えていただけますか?私はデータポイントのXとYの値が必要ですが、event.GetPosition(lineSeries)を使用すると、データ値ではなくlineSeriesに関連した値を取得しています。助けてください – Shankar

+1

それを考え出しました..その(int)(送信側DataPointとして).IndependentValue :) – Shankar

関連する問題