今天开始继续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 staticpublic string Greeting => "Welcome to Avalonia!";
#pragma warning restore CA1822 // Mark members as staticpublic PlotModel Model { get; private set; }public MainWindowViewModel(){// OxyPlot.Avalonia.PlotView plotView=new OxyPlot.Avalonia.PlotView();// plotView.Model = Model;// Create the plot modelvar 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包测试。