Avalonia学习(十五)-OxyPlot

今天开始继续Avalonia练习。展示一些样例,尤其是第三方库的使用。

本节:OxyPlot

1.引入OxyPlot.Avalonia

2.项目引入

在Main方法里增加OxyPlotModule.EnsureLoaded()方法调用。

public static void Main(string[] args)
{
    OxyPlotModule.EnsureLoaded();
    AppBuilder.Configure<App>()
        .UsePlatformDetect()
        .StartWithClassicDesktopLifetime(args);
}

在App.xaml文件中增加样式引用。

<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="OxyPlotAvalonia.App"
             xmlns:local="using:OxyPlotAvalonia"
             RequestedThemeVariant="Default">
             <!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->

    <Application.DataTemplates>
        <local:ViewLocator/>
    </Application.DataTemplates>
  
    <Application.Styles>
        <FluentTheme />
      <StyleInclude Source="avares://OxyPlot.Avalonia/Themes/Default.axaml"/>
     
    </Application.Styles>
</Application>

前台代码

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="using:OxyPlotAvalonia.ViewModels"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:oxy="clr-namespace:OxyPlot.Avalonia;assembly=OxyPlot.Avalonia" 
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="OxyPlotAvalonia.Views.MainWindow"
       
        x:DataType="vm:MainWindowViewModel"
        Icon="/Assets/avalonia-logo.ico"
        Title="OxyPlotAvalonia">

    <Design.DataContext>
        <!-- This only sets the DataContext for the previewer in an IDE,
             to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
        <vm:MainWindowViewModel/>
    </Design.DataContext>
      <oxy:PlotView Model="{Binding Model}" />
    <!--<TextBlock Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/>-->

</Window>

后台代码

using OxyPlot;
using OxyPlot.Series;
using System.Collections.Generic;

namespace OxyPlotAvalonia.ViewModels
{
    public class MainWindowViewModel : ViewModelBase
    {
#pragma warning disable CA1822 // Mark members as static
        public string Greeting => "Welcome to Avalonia!";
#pragma warning restore CA1822 // Mark members as static
        public PlotModel Model { get; private set; }
        public MainWindowViewModel()
        {

         //   OxyPlot.Avalonia.PlotView plotView=new OxyPlot.Avalonia.PlotView();
         //   plotView.Model = Model;
            // Create the plot model
            var tmp = new PlotModel { Title = "Simple example", Subtitle = "using OxyPlot" };

           // OxyPlot.Series.Series series=new  
            // Create two line series (markers are hidden by default)
          
            var series1 = new LineSeries { Title = "Series 1", MarkerType = MarkerType.Circle };
            List<DataPoint> points = new List<OxyPlot.DataPoint>();
            points.Add(new DataPoint(0, 0));
            points.Add(new DataPoint(10, 18));
            points.Add(new DataPoint(20, 12));
            points.Add(new DataPoint(30, 8));
            points.Add(new DataPoint(40, 15));
            series1.ItemsSource = points;

            var series2 = new LineSeries { Title = "Series 2", MarkerType = MarkerType.Square };
            List<DataPoint> points1 = new List<OxyPlot.DataPoint>();
            points.Add(new DataPoint(0, 0));
            points.Add(new DataPoint(10, 18));
            points.Add(new DataPoint(20, 12));
            points.Add(new DataPoint(30, 8));
            points.Add(new DataPoint(40, 15));
            points1.Add(new DataPoint(0, 4));
            points1.Add(new DataPoint(10, 12));
            points1.Add(new DataPoint(20, 16));
            points1.Add(new DataPoint(30, 25));
            points1.Add(new DataPoint(40, 5));
         
            // Add the series to the plot model
            // tmp.Series.Add(series1);
            // tmp.Series.Add(series2);
            tmp.Series.Add(series1);
            this.Model = tmp;
        }
    }
}

运行效果

经过测试,最新版Avalonia11.0.6会报错,Oxyplot.Avalonia没有对应更新,你要直接用最新Avalonia,可以引入Oxyplot.AvaloniaCore包测试。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-31 17:48:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-31 17:48:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-31 17:48:02       82 阅读
  4. Python语言-面向对象

    2023-12-31 17:48:02       91 阅读

热门阅读

  1. CJ系列D-Net使用手册

    2023-12-31 17:48:02       49 阅读
  2. VIM8 文本实战学习

    2023-12-31 17:48:02       51 阅读
  3. 算法训练营Day32

    2023-12-31 17:48:02       61 阅读
  4. WPF 基础入门(样式)

    2023-12-31 17:48:02       61 阅读
  5. 什么是ajax,为什么使用ajax?

    2023-12-31 17:48:02       66 阅读
  6. ssh连接docker与宿主机进入docker环境变量不一致

    2023-12-31 17:48:02       72 阅读
  7. 多开工具对手机应用启动速度的优化与改进

    2023-12-31 17:48:02       60 阅读
  8. 配置yum镜像源

    2023-12-31 17:48:02       46 阅读
  9. 速盾网络:cdn数量对网站访问速度的影响

    2023-12-31 17:48:02       61 阅读
  10. 2023年广东省网络安全B模块(笔记详解)

    2023-12-31 17:48:02       44 阅读