syncfusion winrt图表

时间:2012-12-08 22:19:39

标签: c# xaml windows-runtime syncfusion

我正在尝试在我的新Win8 C#/ XAML商店应用程序中使用SyncFusion WinRT Studio中的饼图,我无法弄清楚如何在图表上设置数据。我在我的页面上有图表,并尝试了我可以找到的所有设置数据以使事情显示,但我无法让它工作。示例应用程序没有太大帮助,因为他们的页面中有0个代码,我无法弄清楚有什么不同。下面的图表是从他们的示例中复制的,但它在我的应用程序中不起作用。任何人都有在WinRT应用程序中使用SyncFusion图表的任何样本吗?

XAML中的图表:

      <Grid Margin="30,15,30,30" x:Name="ChartGrid">
        <Grid.Resources>
          <local:Labelconvertor x:Key="labelconverter"/>
          <Style TargetType="Line" x:Key="lineStyle">
            <Setter Property="StrokeThickness" Value="0"/>
          </Style>
          <DataTemplate x:Key="labelTemplate">
            <TextBlock Margin="10,0,0,0" Text="{Binding Converter={StaticResource labelconverter}}" FontSize="26" FontFamily="Segoe UI" FontWeight="Light" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Top" Opacity="0.5"></TextBlock>
          </DataTemplate>
          <DataTemplate x:Key="legend">
            <StackPanel Orientation="Horizontal">
              <Grid Margin="10,0,0,0">
                <Grid.ColumnDefinitions>
                  <ColumnDefinition/>
                  <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <Rectangle Width="15" Height="15" Fill="{Binding Interior}"></Rectangle>
                <TextBlock Margin="10,5,5,0" Grid.Column="1" Text="{Binding Item.Expense}"></TextBlock>
              </Grid>
            </StackPanel>
          </DataTemplate>
        </Grid.Resources>
        <Grid.DataContext>
          <local:PieChartViewModel/>
        </Grid.DataContext>
        <Grid.RowDefinitions>
          <RowDefinition Height="Auto"></RowDefinition>
          <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <StackPanel Margin="0,0,0,20">
        </StackPanel>
        <chart:Chart x:Name="ScatterChart" AreaBorderThickness="0" HorizontalAlignment="Center" Grid.RowSpan="2" Visibility="Visible">
          <chart:Chart.Header>
            <TextBlock FontSize="20" FontFamily="Segoe UI" Margin="0,20,0,10">Agriculture Expenses Comparison</TextBlock>
          </chart:Chart.Header>
          <chart:Chart.PrimaryAxis>
            <chart:ChartAxis></chart:ChartAxis>
          </chart:Chart.PrimaryAxis>
          <chart:Chart.SecondaryAxis>
            <chart:ChartAxis></chart:ChartAxis>
          </chart:Chart.SecondaryAxis>
          <chart:Chart.Legend>
            <chart:ChartLegend  CornerRadius="0" ItemTemplate="{StaticResource legend}" CheckBoxVisibility="Visible" BorderThickness="1">
            </chart:ChartLegend>
          </chart:Chart.Legend>
          <chart:PieSeries ItemsSource="{Binding Expenditure}" XBindingPath="Expense" x:Name="pieSeries" ExplodeAll="{Binding Path=IsChecked,ElementName=chkExplode}" ExplodedRadius="{Binding Path=Value,ElementName=slRadius}" Palette="Metro" Label="Expenditures" YBindingPath="Amount">
            <chart:PieSeries.AdornmentsInfo>
              <chart:ChartAdornmentInfo AdornmentsPosition="Bottom"  HorizontalAlignment="Center" VerticalAlignment="Center" ConnectorLineStyle="{StaticResource lineStyle}" ShowConnectorLine="True" ConnectorHeight="30" ShowLabel="True"  LabelTemplate="{StaticResource labelTemplate}" SegmentLabelContent="YValue">
              </chart:ChartAdornmentInfo>
            </chart:PieSeries.AdornmentsInfo>
          </chart:PieSeries>
        </chart:Chart>
      </Grid>
    </StackPanel>
  </Grid>

从LoadState函数调用Code-Behind :(我已经尝试了所有这些选项,但它们都没有工作......)

  PieChartViewModel pvm = new PieChartViewModel();
  this.DefaultViewModel["PieChartViewModel"] = pvm;
  this.DefaultViewModel["DataContext"] = pvm;
  this.DefaultViewModel["Items"] = pvm;
  this.DefaultViewModel["DefaultViewModel"] = pvm;
  this.ScatterChart.DataContext = pvm;
  this.ChartGrid.DataContext = pvm;

对象定义:

public class PieChartViewModel
{
  public PieChartViewModel()
  {
    this.Expenditure = new List<CompanyExpense>();
    Expenditure.Add(new CompanyExpense() { Expense = "Seeds", Amount = 20d });
    Expenditure.Add(new CompanyExpense() { Expense = "Fertilizers", Amount = 23d });
    Expenditure.Add(new CompanyExpense() { Expense = "Insurance", Amount = 12d });
    Expenditure.Add(new CompanyExpense() { Expense = "Labor", Amount = 28d });
    Expenditure.Add(new CompanyExpense() { Expense = "Warehousing", Amount = 10d });
    Expenditure.Add(new CompanyExpense() { Expense = "Taxes", Amount = 10d });
    Expenditure.Add(new CompanyExpense() { Expense = "Truck", Amount = 10d });
  }
  public IList<CompanyExpense> Expenditure
  {
    get;
    set;
  }
}
public class CompanyExpense
{
  public string Expense { get; set; }
  public double Amount { get; set; }
}

1 个答案:

答案 0 :(得分:1)

我能够使用相同的数据填充饼图而没有问题。请在PieChartDemo

找到样本

以下是解释如何配置饼图的文档:PieChartHelp

以下是用于提供生成PieSeries的数据的三个API,

  1. ItemsSource - 您可以使用此属性提供数据源。任何IEnumerable都可以作为数据源。
  2. XBindingPath - 用于为源对象中的类别数据提供路径。
  3. YBindingPath - 用于为源对象中的数值数据提供路径。