none
Wpf使用 System.Windows.Controls.DataVisualization.Charting获取点击的点 RRS feed

  • 问题

  • 在Wpf中使用了System.Windows.Controls.DataVisualization.Charting控件绘制散点图,部分代码如下

    <DVC:Chart>
           <DVC:Chart.Series>
               <DVC:ScatterSeries Title="危险"    DataPointStyle="{StaticResource DgStyle}"  ItemsSource="{Binding DgValue}"
                    IndependentValueBinding="{Binding Path=X}"  DependentValueBinding="{Binding Path=Y}">
               </DVC:ScatterSeries>

           </DVC:Chart.Series>

    </DVC:Chart>

    我将点集合绑定到ViewModel中的一个集合中,现在有个问题是怎么获取散点图中点击的某个点将其删除,这个点击方法我想使用绑定事件的方法.

    2018年8月28日 8:41

答案

  • Hi Z_H,

    如果你想把event的触发绑定到ViewModel的command, 你可以参考一下下面的文档:

    https://www.cnblogs.com/fdyang/p/3918921.html

    首先,需要在xaml中声明namespace:

    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
    xmlns:command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"

    https://blog.csdn.net/psh2009/article/details/51039101

    Best Regards,

    Cherry


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Z_H 2018年9月13日 7:40
    2018年9月6日 9:11
    版主

全部回复

  • 有没有类似  GetNearestPoint 这类的事件,自己重载一下
    2018年8月29日 1:45
  • 我现在使用的解决方案是:

    在 xaml文件中使用EventSetter标签注册事件

     <EventSetter Event="Control.PreviewMouseLeftButtonDown" Handler="EventSetter_OnHandlerNull"/>

    在xaml.cs文件中使用

     private void EventSetter_OnHandlerNull(object sender, MouseButtonEventArgs e)
            {
                ScatterDataPoint dataPoint = (ScatterDataPoint)sender;
                var con = this.DataContext as LiquidViewModel;
                var re = MessageBox.Show("是否移除空测点:" + dataPoint.IndependentValue.ToString() + "," + dataPoint.DependentValue.ToString(), "提示", MessageBoxButton.YesNo);
                if (re == MessageBoxResult.No)
                {
                    return;
                }
                var removePoints = con.NullValue.Where(p =>
                    p.X == (double) dataPoint.IndependentValue && p.Y == (double) dataPoint.DependentValue).ToList();
                foreach (var point in removePoints)
                {
                    con.NullValue.Remove(point);
                }

            }

    但是这个不是我想要的,我希望将事件以绑定的方式绑定到ViewModel中

                
    2018年9月3日 1:56
  • Hi Z_H,

    如果你想把event的触发绑定到ViewModel的command, 你可以参考一下下面的文档:

    https://www.cnblogs.com/fdyang/p/3918921.html

    首先,需要在xaml中声明namespace:

    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
    xmlns:command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"

    https://blog.csdn.net/psh2009/article/details/51039101

    Best Regards,

    Cherry


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Z_H 2018年9月13日 7:40
    2018年9月6日 9:11
    版主