尝试在 Xamarin 中绑定同步图表数据时出错



我正在尝试为Syncfusion图表制作一个粗略的原型。我可以让图表绑定到隐藏代码中的数据,但是当我尝试在 Xaml 中绘制图表并以这种方式绑定它时,我无法获取任何要绘制的数据。这是我的 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:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:JunkChartTest"
mc:Ignorable="d"
xmlns:chart="clr-namespace:Syncfusion.SfChart.XForms;assembly=Syncfusion.SfChart.XForms"
x:Class="JunkChartTest.MainPage"
Padding="5,50,5,5">
<ContentPage.BindingContext>
<local:SalesViewModel />
</ContentPage.BindingContext>
<chart:SfChart>
<chart:SfChart.PrimaryAxis>
<chart:CategoryAxis/>
</chart:SfChart.PrimaryAxis>
<chart:SfChart.SecondaryAxis>
<chart:NumericalAxis/>
</chart:SfChart.SecondaryAxis>
<chart:ColumnSeries ItemsSource="{Binding SalesData}"
XBindingPath="Year"
YBindingPath="Target"/>
<chart:ColumnSeries ItemsSource="{Binding SalesData}"
XBindingPath="Year"
YBindingPath="Sale"/>
</chart:SfChart>
</ContentPage>

这是隐藏代码中的数据...

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Syncfusion.SfChart.XForms;
using Xamarin.Forms;
namespace JunkChartTest
{
[DesignTimeVisible(false)]
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
var viewModel = new SalesViewModel();
}
public class SaleInfo
{
public string Year { get; set; }
public double Target { get; set; }
public double Sale { get; set; }
}
public class SalesViewModel
{
public List<SaleInfo> SalesData { get; set; }
public SalesViewModel()
{
SalesData = new List<SaleInfo>();
SalesData.Add(new SaleInfo { Year = "2014", Target = 500, Sale = 342 });
SalesData.Add(new SaleInfo { Year = "2015", Target = 520, Sale = 393 });
SalesData.Add(new SaleInfo { Year = "2016", Target = 560, Sale = 431 });
SalesData.Add(new SaleInfo { Year = "2017", Target = 600, Sale = 520 });
SalesData.Add(new SaleInfo { Year = "2018", Target = 620, Sale = 578 });
SalesData.Add(new SaleInfo { Year = "2019", Target = 680, Sale = 900 });
}
}
}
}

我遵循了 SyncFusion 中的代码示例,但它们似乎不起作用。任何意见不胜感激。

谢谢杰森,完全错过了。我将该类移到了 MainPage 类之外,并能够使用页面顶部的以下 Xaml 代码在 Xaml 中绑定我的数据:

<ContentPage.BindingContext>
<local:SalesViewModel />
</ContentPage.BindingContext>

我们已经分析了您的代码,并让您知道您已在 MainPage 类中创建 SalesViewModel 类。若要解决此问题,您已将 SalesViewModel 类移到主页之外。请参考下面的代码。

Code snippet: 
public partial class MainPage : ContentPage 
{ 
public MainPage() 
{ 
InitializeComponent(); 
} 
} 
public class SalesViewModel 
{ 
public List<SaleInfo> SalesData { get; set; } 
public SalesViewModel() 
{ 
SalesData = new List<SaleInfo>(); 
SalesData.Add(new SaleInfo { Year = "2014", Target = 500, Sale = 342 }); 
SalesData.Add(new SaleInfo { Year = "2015", Target = 520, Sale = 393 }); 
SalesData.Add(new SaleInfo { Year = "2016", Target = 560, Sale = 431 }); 
SalesData.Add(new SaleInfo { Year = "2017", Target = 600, Sale = 520 }); 
SalesData.Add(new SaleInfo { Year = "2018", Target = 620, Sale = 578 }); 
SalesData.Add(new SaleInfo { Year = "2019", Target = 680, Sale = 900 }); 
} 
} 
Sample - https://www.syncfusion.com/downloads/support/directtrac/245697/ze/SimpleSample-740513237.zip 
Regards,   
Muneesh Kumar G.

最新更新