找回密码
 立即注册

QQ登录

只需一步,快速开始

tucueltd

银牌会员

5

主题

9

帖子

2243

积分

银牌会员

积分
2243

活字格认证

tucueltd
银牌会员   /  发表于:2015-2-6 12:52  /   查看:8923  /  回复:6
rt,我在XAML中设置了饼图的百分比显示格式,效果图如下:



相关的XAML代码如下:
  1. <c1chart:C1Chart Name="faultTimes" ChartType="Pie" Margin="150,0,150,0">
  2.                 <c1chart:C1Chart.Resources>
  3.                     <DataTemplate x:Key="lbl">
  4.                         <StackPanel>
  5.                             <StackPanel>
  6.                                 <TextBlock Text="{Binding Path=Name}" FontSize="20"/>
  7.                             </StackPanel>
  8.                             <TextBlock Text="{Binding Path=PercentageSeries,Converter={x:Static c1chart:Converters.Format}, ConverterParameter=#.#%}" FontSize="20" />
  9.                         </StackPanel>
  10.                     </DataTemplate>
  11.                 </c1chart:C1Chart.Resources>

  12.                 <c1chart:C1Chart.Data>
  13.                     <c1chart:ChartData>
  14.                         <c1chart:ChartData.ItemNames>变桨 发电机 变频器 偏航</c1chart:ChartData.ItemNames>
  15.                         <c1chart:DataSeries ItemsSource ="{Binding data}"  Values="25 43.8 12.5 18.8" PointLabelTemplate="{StaticResource lbl}" HorizontalAlignment="Center" />
  16.                     </c1chart:ChartData>
  17.                 </c1chart:C1Chart.Data>
  18.                 <c1chart:C1ChartLegend DockPanel.Dock="Right" VerticalAlignment="Bottom" FontSize="20" />
  19.             </c1chart:C1Chart>
复制代码


问题来了,我在C#文件中改变数据后,一刷新,饼图周围的百分比和项目显示就不见了,请问应该怎么写?

目前修改数据的C#代码如下:
  1. private void drawPie()
  2. {
  3.        if (faultTimes.Data.Children.Count != 0)
  4.        {
  5.            faultTimes.Data.Children.Clear();
  6.            keys.Clear();
  7.        }
  8.        createNewDataSeries();
  9. }

  10. private void createNewDataSeries()
  11. {
  12.        var data = new DataSeries()
  13.        {
  14.            ItemsSource = SampleItem.CreateSampleData(),
  15.            ValueBinding = new Binding("Value"),
  16.        };
  17.        faultTimes.Data.Children.Add(data);
  18. }

  19. public class SampleItem
  20. {
  21.       public double Value { get; set; }

  22.       public static SampleItem[] CreateSampleData()
  23.       {
  24.           var array = new SampleItem[4];

  25.           for (int i = 0; i < 4; i++)
  26.           {
  27.               array[i] = new SampleItem()
  28.               {
  29.                     Value = i+1//Double.Parse(value[i])
  30.               };
  31.           }
  32.           return array;
  33.       }
  34. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

5 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-2-6 16:37:00
沙发
回复 1楼tucueltd的帖子

问题在于你重置了DataSeries,但没有重新设置它的模板。

这句代码展示了,你给这个DataSeries设置了模板来展示数据,百分号和文字都是模板设置的。
  1. <c1chart:DataSeries ItemsSource ="{Binding data}"  Values="25 43.8 12.5 18.8" PointLabelTemplate="{StaticResource lbl}" HorizontalAlignment="Center" />
复制代码


这句代码中,你又重新创建了DataSeries,原来的模板已经没有了。
  1. var data = new DataSeries()
  2.             {

  3.                 ItemsSource = SampleItem.CreateSampleData(),

  4.                 ValueBinding = new Binding("Value"),

  5.             };

  6.             faultTimes.Data.Children.Add(data);
复制代码


解决方法:需要在cs代码中将你的模板设置给新创建的DataSeries。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
tucueltd
银牌会员   /  发表于:2015-2-7 08:19:00
板凳
回复 1楼tucueltd的帖子

问题在于你重置了DataSeries,但没有重新设置它的模板。

这句代码展示了,你给这个DataSeries设置
Alice 发表于 2015-2-6 16:37:00


确实是因为没有设置模板,但是我在重置DataSerise后设置了模板也没有展示效果,所以不知道该怎么做了

不知道如下设置是否正确:
  1. var data = new DataSeries()
  2. {
  3.         ItemsSource = SampleItem.CreateSampleData(value),
  4.         ValueBinding = new Binding(&quot;Value&quot;),
  5.                
  6.         PointLabelTemplate = this.Resources[&quot;lbl&quot;] as DataTemplate
  7. };
复制代码
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-2-9 13:43:00
地板
回复 3楼tucueltd的帖子

C1Chart的类型是Pie的时候的动态绑定请参考如下代码:
1.legend项目:
  1. public class Legendvalues
  2.   {
  3.       public string Name { get; set; }
  4.       public double PercentageValue { get; set; }
  5.   }
复制代码

2.创建一个集合,并且给chart.Data.ItemNames赋值:
  1. List<Legendvalues> chartlegenditems = new List<Legendvalues>();
  2.       chartlegenditems.Add(new Legendvalues() { Name = "Mango", PercentageValue = 20.3 });
  3.       chartlegenditems.Add(new Legendvalues() { Name = "Apple", PercentageValue = 30.1 });
  4.       chartlegenditems.Add(new Legendvalues() { Name = "Strawberry", PercentageValue = 10.4 });
  5.       chartlegenditems.Add(new Legendvalues() { Name = "Orange", PercentageValue = 50.2 });
  6.       chart.Data.ItemNames = chartlegenditems;
复制代码


3.xmal的绑定代码:
  1. <c1chart:C1ChartLegend.ItemTemplate>
  2.                  <DataTemplate>
  3.                      <StackPanel  Orientation="Horizontal">
  4.                          <Canvas  Width="24" Height="24" VerticalAlignment="Center">
  5.                           <ContentControl Canvas.Top="2" HorizontalContentAlignment="Stretch"
  6.                            VerticalContentAlignment="Stretch" Content="{Binding Path=Line}"
  7.                            Width="24" Height="20"/>
  8.                             <ContentControl  HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Canvas.Left="5" Canvas.Top="5"  Content="{Binding Path=Symbol}"  Width="14" Height="14"/>
  9.             </Canvas>
  10.                          <TextBlock  Text="{Binding Path=Item.Name}" Margin="2,0,2,0" Foreground="{Binding Path=Symbol.Fill}" VerticalAlignment="Center"/>

  11.                          <TextBlock Text="{Binding Item.PercentageValue}"  Margin="2,0,2,0" Foreground="{Binding Path=Symbol.Fill}"  VerticalAlignment="Center"/>

  12.                      </StackPanel>
  13.                  </DataTemplate>
  14.              </c1chart:C1ChartLegend.ItemTemplate>
  15.              </c1chart:C1ChartLegend>
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
黑小子代码
注册会员   /  发表于:2020-4-16 16:43:25
5#
能发一个完整的代码吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-17 09:35:48
6#
你好,请直接参考饼图文档中的代码
如果有碰到什么问题的话,请直接描述问题

https://www.grapecity.com/compon ... hart/pie-chart.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部