0

Как я понял из документации, в OxyPlot реализовано два подхода к отображению графиков. С помощью PlotView и вынесения логики отображения в код. И с помощью Plot и LineSeries, ориентированных на XAML-разметку. Я пытаюсь действовать по этой инструкции: https://oxyplot.readthedocs.io/en/latest/getting-started/hello-wpf-xaml.html

Я скачал через NuGet пакет OxyPlot.Wpf. Подключил пространство имен xmlns:oxy="http://oxyplot.org/wpf". Далее я пытаюсь вставить разметку из примера:

  <oxy:Plot.Series>
    <oxy:LineSeries ItemsSource="{Binding Points}"/>
  </oxy:Plot.Series>
</oxy:Plot>

Однако сталкиваюсь с ошибкой XLS0414 «Не удалось найти тип "oxy:Plot". Убедитесь, что не пропущена ссылка на сборку и что все сборки, на которые заданы ссылки, выполнены»

Отдельное непонимание у меня вызывает тот факт, что аналогичный кейс для фреймворка AvaloniaUI отлично работает. В этом случае я подключил пакет OxyPlot.Avalonia и пространство имен xmlns:oxy="http://oxyplot.org/avalonia". Элемент Plot доступен.

Что мне нужно сделать, чтобы использовать XAML-разметку для оформления графиков? Сама разметка очень простая и почти дословно повторяет пример из документации:

<Window x:Class="Project.WPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" mc:Ignorable="d"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:vm="clr-namespace:Project.WPF.ViewModels"
        xmlns:oxy="http://oxyplot.org/wpf"
        Height="450" Width="800"
        Title="{Binding Path=Title}">
    <Window.DataContext>
        <vm:MainWindowViewModel/>
    </Window.DataContext>
    <oxy:Plot Title="{Binding Title}">
        <oxy:Plot.Series>
            <oxy:LineSeries ItemsSource="{Binding Points}"/>
        </oxy:Plot.Series>
    </oxy:Plot>
</Window

Как я пришел к проблеме (не имеет прямого отношения к вопросу):

Мои коллеги в контексте некоторой работы создают относительно простые приложения с использованием WinForm и Teechart, основное назначение которых - показать данные из БД и в некоторых случаях отобразить график. Но на горизонте замаячило требование сделать подобное под Linux. Я проявил некоторую инициативу, решив заранее разобраться в кроссплатформенной разработке. Моё внимание привлек фреймворк AvaloniaUI. Однако, мне не удалось использовать в нем Teechart. Недолгий поиск альтернатив привел к OxyPlot. Я предположил, что будет неплохой идеей реализовать однотипный учебный проект одновременно и на AvaloniaUI и на WPF, чтобы не столкнуться с глюками Open Source фреймворка. Однако, столкнулся с непонятным поведением в WPF.

  • Что мне нужно сделать, чтобы использовать XAML-разметку для оформления графиков? - не верить слепо ошибкам, а попробовать пересобрать проект? XAML штука капризная, она часто не сразу воспринимает добавленные для нее компоненты, очистка и пересборка почти всегда в этом помогает. Если нет, то у вас есть еще ошибка, помимо этой. <Window.DataContext> кстати плохо. – EvgeniyZ Nov 30 '21 at 00:12
  • К сожалению, проект уже был многократно пересобран... Спасибо за замечание о DataContext. – Андрей Усов Nov 30 '21 at 03:43
  • Ну, тогда у вас либо есть еще ошибка, либо документация устарела (судя по примерам так оно и есть, ибо используется везде PlotView). – EvgeniyZ Nov 30 '21 at 03:55

0 Answers0