Я пытаюсь написать пользовательский элемент управления, который использует Oxyplot для создания ряда «дорожек» для отображения ряда линий внутри одного PlotView. Это объясняется тем, что несколько элементов управления PV очень медленные, в то время как хранение всех рядов линий в одном (с несколькими перемещенными осями) вместе с аннотациями для использования в качестве разделителей дорожек выполняется намного быстрее.
Вот У меня есть проблема: я храню элемент управления plot в контейнере с разделением (панель 2) и хочу обновить panel1 информацией о «размере» области построения (т. е. model.PlotArea.Width) при каждом ее изменении (форма / элемент управления) изменить размер, перетащите аннотацию для изменения размера дорожки и т. д. c.). К сожалению, похоже, что рендеринг / обновление объекта PlotArea происходит в отдельном потоке и обновляется после выполнения исходящего кода в моем основном потоке. Это должна быть эта переменная, потому что то, что я строю, зависит от ширины оси и других элементов рендеринга OxyPlot. Мне нужна модель. Участок. Ширина - период. Я «пробовал» хранить переменные, которые пытаются вычислить, что это косвенно, но если визуализированная ось меняет ширину (то есть кто-то прокручивает и дополнительные цифры используются в отображаемом числе), то это отбрасывает все.
Например (псевдо-код):
(допустим начальное состояние, PlotArea.width = 1000), скажем; PlotArea.Width = 5000; print PlotArea.Width (вернет 1000, а не 5000, поскольку он не завершил выполнение «чего-то», например рендеринга или обновления)
Теперь, если я жду Task.Delay (x), иногда я могу получить это чтобы прочитать правильное значение, но тогда у меня есть отставание в моем процессе рисования. Я также попытался перегрузить метод OnPaint () в элементе управления PlotView и вызвать код рисования Panel1.Invalidate (), который также не работает - он по-прежнему будет видеть «1000», но PlotArea не хватило времени для обновили.
То же самое касается переопределений кода Updating () и Update () и переопределений Validating () и Validated () в PlotView.
Независимо от того, что я делаю, я никак не могу может "сказать", когда эта вещь закончена.
Если я только изменю размер элемента управления по высоте (оставлю постоянную ширины), то он, наконец, нагонит и получит правильное значение.
Любые идеи приветствуются.