C# Xamarin.mac鼠标事件在OxyPlot中不起作用
我使用Xamarin Studio 6.3和Xamarin.Mac。我希望始终在OzyPlot.PlotView中显示跟踪信息。我尝试使用PlotModel.TrackerChanged、PlotModel.MouseMove、CandleStickSeries.MouseMove和其他事件。PlotModel.TrackerChanged从未发生过,CandleStickSeries.MouseMove只有在鼠标左键按下并移动时才会发生。 我怎样才能赶上比赛?在GTK中,一切正常 我使用ViewController.cs的以下代码: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
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。