Добавление событий в WPF LineSeries DataPoint - PullRequest
2 голосов
/ 22 июля 2011

Я использую WPF Toolkit для рисования линейной диаграммы (функция в нашем приложении). Учитывая коллекцию, я могу построить график, однако, когда пользователь дважды щелкает на DataPoint на графике, мне трудно получить значение данных X и Y (не значение Co-Ordinate в линейном графике). ).

Я могу установить свойство с помощью DataPointStyle, но не могу добавить событие к нему.

Если я использую свойство MouseDoubleClick="lineChart_ShowResults_DoubleClick" на узле LineSeries, то оно вызывает событие, когда пользователь нажимает на любую точку. Но мне нужно вызвать событие только , если пользователь нажимает на 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>

1 Ответ

3 голосов
/ 22 июля 2011

Как вы сказали, событие срабатывает при нажатии на любую из точек, потому что событие назначено 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.

Я не пробовал, дайте мне знать, если это работает

...