2016-07-22 67 views
1

大家好。我正在創建一個Xamarin.Forms便攜式應用程序,我想用OxyPlot在那裏顯示一個圖表。Xamarin.Forms:沒有出現OxyPlot餅圖

我跟在here關於OxyPlot的文檔。但我仍然有點混亂。你能看看我跟蹤的過程,並檢查我做的是對的嗎?這些只是基於我自己的理解。

這裏就是我所做的:

  1. 更新Xamarin.Forms的NuGet包到最新版本。
  2. 在便攜式和平臺特定的項目中添加OxyPlot.Xamarin.Forms NuGet包。
  3. 我通過添加來初始化OxyPlot渲染器OxyPlot.Xamarin.Forms.Platform.Android.PlotViewRenderer.Init();剛剛在我的MainActivity.cs中的Xamarin.Forms.Forms.Init()
  4. 在便攜式應用程序項目中,我將這個圖表視圖添加到我的App.cs.

    public App() 
    { 
        this.MainPage = new ContentPage 
        { 
        Content = new PlotView 
        { 
        Model = new PlotModel { Title = "Hello, Forms!" }, 
        VerticalOptions = LayoutOptions.Fill, 
        HorizontalOptions = LayoutOptions.Fill, 
         }, 
        }; 
    } 
    
  5. 在我的XAML頁面,我添加了這個命名空間聲明:

的xmlns:氧=「CLR的命名空間:OxyPlot.Xamarin.Forms;裝配= 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 for 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(); 
          } 
         } 
        } 
    
  • 你能告訴我我做錯了什麼嗎?圖表沒有出現。任何幫助像我這樣的新手都受到高度讚賞。非常感謝。

    +0

    派生所以是沒有PieGraph顯示的結果呢?或者像運行時創建的PlotView一樣,有一個'Title =「Hello,Forms!」',並且希望根據Design-Time創建的PlotView及其關聯的PieViewModel綁定來看到Title =「Pie Sample1」? –

    +0

    @JeremyThompson爵士在屏幕上什麼也沒有。 –

    +0

    你能告訴我們你的'公共類MainActivity:AndroidActivity'例如:https://github.com/oxyplot/documentation-examples/blob/master/HelloWorld/XamarinFormsApp1/XamarinFormsApp1/XamarinFormsApp1.Android/MainActivity.cs –

    回答

    1

    你MainActivity類別需要從AndroidActivityFormsApplicationActivity

    +0

    @JeremyStephens我取代了它,但沒有發生什麼事?你檢查了我的代碼嗎?你認爲我的約束是正確的嗎?謝謝你回答爵士。 –

    +0

    MainActivity類是唯一與演示示例看起來不一樣的類。爲什麼不下載示例並構建它以確認它的工作原理,然後將其與您的數據進行比較並找出差異。 –

    +0

    但這就是我所做的?我不知道它爲什麼不出現? –