【问题标题】:syncfusion winrt chart同步融合winrt图表
【发布时间】:2012-12-11 06:47:44
【问题描述】:

我试图在我的新 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 函数调用的代码隐藏:(我已经尝试了所有这些选项,但它们都不起作用......)

  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; }
}

【问题讨论】:

    标签: c# xaml windows-runtime syncfusion


    【解决方案1】:

    我能够毫无问题地使用相同的数据填充饼图。请在PieChartDemo找到样品

    这里是解释如何配置饼图的文档:PieChartHelp

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-02
      • 2021-02-20
      • 2012-07-10
      • 1970-01-01
      相关资源
      最近更新 更多