Xamarin.Forms: 没有出现 OxyPlot 饼图
Xamarin.Forms: Not appearing OxyPlot Pie Chart
大家好。我正在创建一个 Xamarin.Forms 便携式应用程序,我想在那里显示一个使用 OxyPlot 的图表。
我遵循了 here 中关于 OxyPlot 的文档。但我还是有点困惑。你能看看我遵循的过程并检查我做的是否正确吗?这些只是基于我自己的理解。
这是我所做的:
- 将 Xamarin.Forms NuGet 包更新到最新版本。
- 添加 OxyPlot。Xamarin.Forms 在可移植项目和平台特定项目中添加 NuGet 包。
- 我通过在 [=62] 之后添加 OxyPlot.Xamarin.Forms.Platform.Android.PlotViewRenderer.Init(); 来初始化 OxyPlot 渲染器=].Forms.Init() 在我的 MainActivity.cs
在便携式应用程序项目中,我将此绘图视图添加到我的 App.cs。
public App()
{
this.MainPage = new ContentPage
{
Content = new PlotView
{
Model = new PlotModel { Title = "Hello, Forms!" },
VerticalOptions = LayoutOptions.Fill,
HorizontalOptions = LayoutOptions.Fill,
},
};
}
在我的 XAML 页面中,我添加了这个名称空间声明:
xmlns:oxy="clr-namespace:OxyPlot.Xamarin.Forms;assembly=OxyPlot.Xamarin.Forms"
然后我在同一页上添加了这个。
<oxy:PlotView Model="{Binding Model1}" VerticalOptions="Center" HorizontalOptions="Center" />
这里是整个代码SalesPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:oxy="clr-namespace:OxyPlot.Xamarin.Forms;assembly=OxyPlot.Xamarin.Forms"
xmlns:ViewModels="clr-namespace:XamarinFormsDemo.ViewModels;assembly=XamarinFormsDemo"
x:Class="XamarinFormsDemo.Views.SalesPage"
BackgroundImage="bg3.jpg"
Title="Sales Page">
<ContentPage.BindingContext>
<ViewModels:SalesVM/>
</ContentPage.BindingContext>
<oxy:PlotView Model="{Binding Model1}" VerticalOptions="Center" HorizontalOptions="Center"/>
</ContentPage>
之后,我尝试调用包含名为 PiewViewModel.cs
图表内容的视图模型
using OxyPlot;
using OxyPlot.Series;
namespace ExampleLibrary
{
public class PieViewModel
{
private PlotModel modelP1;
public PieViewModel()
{
modelP1 = new PlotModel { Title = "Pie Sample1" };
dynamic seriesP1 = new PieSeries { StrokeThickness = 2.0, InsideLabelPosition = 0.8, AngleSpan = 360, StartAngle = 0 };
seriesP1.Slices.Add(new PieSlice("Africa", 1030) { IsExploded = false, Fill = OxyColors.PaleVioletRed });
seriesP1.Slices.Add(new PieSlice("Americas", 929) { IsExploded = true });
seriesP1.Slices.Add(new PieSlice("Asia", 4157) { IsExploded = true });
seriesP1.Slices.Add(new PieSlice("Europe", 739) { IsExploded = true });
seriesP1.Slices.Add(new PieSlice("Oceania", 35) { IsExploded = true });
modelP1.Series.Add(seriesP1);
}
public PlotModel Model1
{
get { return modelP1; }
set { modelP1 = value; }
}
}
}
这是我的 MainActivity.cs Android
using System;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using ImageCircle.Forms.Plugin.Droid;
namespace XamarinFormsDemo.Droid
{
[Activity(Label = "XamarinFormsDemo", Icon = "@drawable/recordsicon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
OxyPlot.Xamarin.Forms.Platform.Android.PlotViewRenderer.Init();
LoadApplication(new App());
ImageCircleRenderer.Init();
}
}
}
你能告诉我我做错了什么吗?图表没有出现。非常感谢对像我这样的新手的任何帮助。非常感谢。
您的 MainActivity class 需要派生自 AndroidActivity
而不是 FormsApplicationActivity
大家好。我正在创建一个 Xamarin.Forms 便携式应用程序,我想在那里显示一个使用 OxyPlot 的图表。
我遵循了 here 中关于 OxyPlot 的文档。但我还是有点困惑。你能看看我遵循的过程并检查我做的是否正确吗?这些只是基于我自己的理解。
这是我所做的:
- 将 Xamarin.Forms NuGet 包更新到最新版本。
- 添加 OxyPlot。Xamarin.Forms 在可移植项目和平台特定项目中添加 NuGet 包。
- 我通过在 [=62] 之后添加 OxyPlot.Xamarin.Forms.Platform.Android.PlotViewRenderer.Init(); 来初始化 OxyPlot 渲染器=].Forms.Init() 在我的 MainActivity.cs
在便携式应用程序项目中,我将此绘图视图添加到我的 App.cs。
public App() { this.MainPage = new ContentPage { Content = new PlotView { Model = new PlotModel { Title = "Hello, Forms!" }, VerticalOptions = LayoutOptions.Fill, HorizontalOptions = LayoutOptions.Fill, }, }; }
在我的 XAML 页面中,我添加了这个名称空间声明:
xmlns:oxy="clr-namespace:OxyPlot.Xamarin.Forms;assembly=OxyPlot.Xamarin.Forms"
然后我在同一页上添加了这个。
<oxy:PlotView Model="{Binding Model1}" VerticalOptions="Center" HorizontalOptions="Center" />
这里是整个代码SalesPage.xaml
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:oxy="clr-namespace:OxyPlot.Xamarin.Forms;assembly=OxyPlot.Xamarin.Forms" xmlns:ViewModels="clr-namespace:XamarinFormsDemo.ViewModels;assembly=XamarinFormsDemo" x:Class="XamarinFormsDemo.Views.SalesPage" BackgroundImage="bg3.jpg" Title="Sales Page"> <ContentPage.BindingContext> <ViewModels:SalesVM/> </ContentPage.BindingContext> <oxy:PlotView Model="{Binding Model1}" VerticalOptions="Center" HorizontalOptions="Center"/> </ContentPage>
之后,我尝试调用包含名为 PiewViewModel.cs
图表内容的视图模型using OxyPlot; using OxyPlot.Series; namespace ExampleLibrary { public class PieViewModel { private PlotModel modelP1; public PieViewModel() { modelP1 = new PlotModel { Title = "Pie Sample1" }; dynamic seriesP1 = new PieSeries { StrokeThickness = 2.0, InsideLabelPosition = 0.8, AngleSpan = 360, StartAngle = 0 }; seriesP1.Slices.Add(new PieSlice("Africa", 1030) { IsExploded = false, Fill = OxyColors.PaleVioletRed }); seriesP1.Slices.Add(new PieSlice("Americas", 929) { IsExploded = true }); seriesP1.Slices.Add(new PieSlice("Asia", 4157) { IsExploded = true }); seriesP1.Slices.Add(new PieSlice("Europe", 739) { IsExploded = true }); seriesP1.Slices.Add(new PieSlice("Oceania", 35) { IsExploded = true }); modelP1.Series.Add(seriesP1); } public PlotModel Model1 { get { return modelP1; } set { modelP1 = value; } } } }
这是我的 MainActivity.cs Android
using System; using Android.App; using Android.Content.PM; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using ImageCircle.Forms.Plugin.Droid; namespace XamarinFormsDemo.Droid { [Activity(Label = "XamarinFormsDemo", Icon = "@drawable/recordsicon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); global::Xamarin.Forms.Forms.Init(this, bundle); OxyPlot.Xamarin.Forms.Platform.Android.PlotViewRenderer.Init(); LoadApplication(new App()); ImageCircleRenderer.Init(); } } }
你能告诉我我做错了什么吗?图表没有出现。非常感谢对像我这样的新手的任何帮助。非常感谢。
您的 MainActivity class 需要派生自 AndroidActivity
而不是 FormsApplicationActivity