Как программно установить позицию Telerik Chart TrackBall
Я создал пользовательский элемент управления, в котором есть Telerik RadCartesianChart. Этот пользовательский элемент управления создает любое количество диаграмм в зависимости от выбора пользователя. Количество графиков на экране может варьироваться, но все они имеют одинаковую ось X. В пользовательский элемент управления я добавил линию шариков трека, которая отлично работает на одном графике при движении мыши. Я хочу добавить одну и ту же линию трекбола на все другие диаграммы в окне, чтобы движение на одном трекболе отражало ту же позицию на других графиках. Как я могу реализовать это поведение программно?
1 ответ
Я не знаю, можете ли вы сделать то, что вы пытаетесь, не добавляя ChartTrackBallController на каждый график.
Я бы предложил добавить несколько рядов к одной диаграмме, разделить ось X, но при необходимости иметь несколько осей Y. Таким образом, ChartTrackBallController выберет точку на всех сериях на графике.
// Trackball
ChartTrackballController ctbcMain = new ChartTrackballController();
ctbcMain.TextNeeded += ctbcMain_TextNeeded;
ctbcMain.InnerPointSize = new SizeF(0, 0);
ctbcMain.OuterPointsSize = new SizeF(0, 0);
rcvUPM.Controllers.Add(ctbcMain);
rcvUPM.ShowTrackBall = true;
В приведенном выше фрагменте кода rcvUPM является представлением radchart, содержащим все серии данных, которые вы хотите показать, а ctbcMain_TextNeeded используется для настройки содержимого того, что показывает указатель мыши для трекбола.
Похоже, что по умолчанию содержимое наведения будет содержать несколько точек из каждой серии, даже после того, как InnerPointSize и OuterPointsSize были установлены в ноль по рекомендации Telerik для поддержки LINQ FirstOrDefault было необходимо для коллекции объектов DataPointInfo, чтобы ограничить его одной точкой на серию,