C# Xamarin.mac鼠标事件在OxyPlot中不起作用

C# Xamarin.mac鼠标事件在OxyPlot中不起作用,c#,xamarin.mac,oxyplot,C#,Xamarin.mac,Oxyplot,我使用Xamarin Studio 6.3和Xamarin.Mac。我希望始终在OzyPlot.PlotView中显示跟踪信息。我尝试使用PlotModel.TrackerChanged、PlotModel.MouseMove、CandleStickSeries.MouseMove和其他事件。PlotModel.TrackerChanged从未发生过,CandleStickSeries.MouseMove只有在鼠标左键按下并移动时才会发生。 我怎样才能赶上比赛?在GTK中,一切正常 我使用Vie

我使用Xamarin Studio 6.3和Xamarin.Mac。我希望始终在OzyPlot.PlotView中显示跟踪信息。我尝试使用PlotModel.TrackerChanged、PlotModel.MouseMove、CandleStickSeries.MouseMove和其他事件。PlotModel.TrackerChanged从未发生过,CandleStickSeries.MouseMove只有在鼠标左键按下并移动时才会发生。 我怎样才能赶上比赛?在GTK中,一切正常

我使用ViewController.cs的以下代码:

using System;
using System.Collections.Generic;
using AppKit;
using Foundation;
using OxyPlot;
using OxyPlot.Axes;
using OxyPlot.Series;
using OxyPlot.Xamarin.Mac;

namespace OxyPlotTest
{
    public partial class ViewController : NSViewController
    {
        List<HighLowItem> bars;

        public ViewController(IntPtr handle) : base(handle)
        {
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            bars = new List<HighLowItem>();

            PlotView plotView = new PlotView(viewCtrl.Frame);

            PlotModel model = new PlotModel { };

            model.TrackerChanged += OnTrackerChanged;
            model.MouseMove += onSeriesMouseMove;

            model.Axes.Add(new DateTimeAxis
            {
                Position = AxisPosition.Bottom,
                MajorGridlineStyle = LineStyle.Dot,
                MinorGridlineStyle = LineStyle.Dot,
            });

            model.Axes.Add(new LinearAxis
            {
                Position = AxisPosition.Left,
                MajorGridlineStyle = LineStyle.Dot,
                MinorGridlineStyle = LineStyle.Dot,
            });

            CandleStickSeries cs = new CandleStickSeries()
            {
                IncreasingFill = OxyColors.DarkGreen,
                DecreasingFill = OxyColors.Red,
                DataFieldX = "X",
                DataFieldHigh = "High",
                DataFieldLow = "Low",
                DataFieldOpen = "Open",
                DataFieldClose = "Close",
                TrackerFormatString = "High: {2:0.00}\nLow: {3:0.00}\nOpen: {4:0.00}\nClose: {5:0.00}",
                ItemsSource = bars

            };

            cs.MouseMove += OnCSMouseMove;

            model.Series.Add(cs);
            plotView.Model = model;

            viewCtrl.AddSubview(plotView);

            bars.Add(new HighLowItem(DateTimeAxis.ToDouble(DateTime.Now), 10, 2, 5, 8));
            bars.Add(new HighLowItem(DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(1)), 15, 6, 8, 11));
            bars.Add(new HighLowItem(DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(2)), 10, 2, 11, 15));
            bars.Add(new HighLowItem(DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(3)), 16, 9, 15, 10));
            bars.Add(new HighLowItem(DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(4)), 11, 5, 10, 8));
            bars.Add(new HighLowItem(DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(5)), 12, 3, 8, 6));

            plotView.InvalidatePlot();
        }

        void OnCSMouseMove(object sender, OxyMouseEventArgs e)
        {
            Console.WriteLine("OnCSMouseMove");
        }

        void onSeriesMouseMove(object sender, OxyMouseEventArgs e)
        {
            Console.WriteLine("onSeriesMouseMove");
        }

        void OnTrackerChanged(object sender, TrackerEventArgs e)
        {
            Console.WriteLine("OnTrackerChanged");
        }

        public override NSObject RepresentedObject
        {
            get
            {
                return base.RepresentedObject;
            }
            set
            {
                base.RepresentedObject = value;
                // Update the view, if already loaded.
            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用AppKit;
使用基础;
使用氧图;
使用OxyPlot.Axes;
使用OxyPlot.系列;
使用OxyPlot.Xamarin.Mac;
名称空间测试
{
公共部分类ViewController:NSViewController
{
列表栏;
公共视图控制器(IntPtr句柄):基本(句柄)
{
}
公共覆盖无效ViewDidLoad()
{
base.ViewDidLoad();
条=新列表();
PlotView PlotView=新的PlotView(viewCtrl.Frame);
PlotModel model=新的PlotModel{};
model.TrackerChanged+=OnTrackerChanged;
model.MouseMove+=onSeriesMouseMove;
model.axis.Add(新的日期时间轴
{
位置=轴位置。底部,
MajorGridlineStyle=LineStyle.Dot,
MinorGridlineStyle=线型.Dot,
});
模型.轴.添加(新的直线轴
{
位置=轴位置。左,
MajorGridlineStyle=LineStyle.Dot,
MinorGridlineStyle=线型.Dot,
});
烛台系列cs=新烛台系列()
{
递增填充=OxyColors.DarkGreen,
递减填充=氧色。红色,
DataFieldX=“X”,
DataFieldHigh=“高”,
DataFieldLow=“低”,
DataFieldOpen=“打开”,
DataFieldClose=“Close”,
trackPerformatString=“高:{2:0.00}\n低:{3:0.00}\n打开:{4:0.00}\n关闭:{5:0.00}”,
项目来源=钢筋
};
cs.MouseMove+=OnCSMouseMove;
型号.系列.添加(cs);
plotView.Model=Model;
viewCtrl.AddSubview(绘图视图);
添加(新的HighLowItem(DateTimeAxis.ToDouble(DateTime.Now))10,2,5,8);
添加(新的HighLowItem(DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(1)),15,6,8,11));
添加(新的HighLowItem(DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(2)),10,2,11,15));
添加(新的HighLowItem(DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(3)),16,9,15,10));
添加(新的HighLowItem(DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(4)),11,5,10,8));
添加(新的HighLowItem(DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(5)),12,3,8,6));
plotView.InvalidatePlot();
}
void OnCSMouseMove(对象发送器,OxyMouseEventArgs e)
{
Console.WriteLine(“OnCSMouseMove”);
}
void onSeriesMouseMove(对象发送器,OxyMouseEventArgs e)
{
Console.WriteLine(“onSeriesMouseMove”);
}
无效OnTrackerChanged(对象发送方、跟踪目标)
{
控制台。写入线(“OnTrackerChanged”);
}
公共覆盖NSObject RepresentedObject
{
得到
{
返回base.RepresentedObject;
}
设置
{
base.RepresentedObject=值;
//更新视图(如果已加载)。
}
}
}
}

Hi Dzam,你找到解决办法了吗?@Lijo,你好。我的解决方案是使用自己的ViewController,捕捉MouseMove事件并调用PlotView的MouseMove。嗨,Dzam,你找到解决方案了吗?@Lijo,嗨。我的解决方案是使用自己的ViewController,捕捉MouseMove事件并调用PlotView的MouseMove。