简体   繁体   English

WPF 饼图 - 切片未显示在图表上

[英]WPF pie chart - slices not displayed on the chart

I'm trying to use a WPF pie chart.我正在尝试使用 WPF 饼图。 The problem is that only the last slice remains displayed.问题是只显示最后一个切片。 I can see that all slices are displayed and immediatly hidden except the last one.我可以看到所有切片都显示并立即隐藏,除了最后一个。 Any idea?任何的想法?

<Window x:Class="ScrumApp01.WindowGraphique"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
    xmlns:DV="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit"
    xmlns:DVC="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
    xmlns:local="clr-namespace:ScrumApp01"
    Title="Fenêtre graphiques SCRUM" Height="674" Width="1216" ResizeMode="CanResizeWithGrip" Name="GraphicScrum01">

<DVC:Chart Margin="25,268,0,0" Title="Pointe de tarte" LegendTitle="Les datas" Background="LightSteelBlue" HorizontalAlignment="Left" VerticalAlignment="Top" Height="324" Width="307">
<DVC:PieSeries Title="Les datas en tarte" Name="Tarte2"
    ItemsSource="{StaticResource FruitCollection2}"
    IndependentValueBinding="{Binding Path=sss}"
    DependentValueBinding="{Binding Path=nnn}" >
</DVC:PieSeries>

private void button3_Click(object sender, RoutedEventArgs e)
{
  FruitCollection2 fff = new FruitCollection2();
  fff.Clear();
  fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[0], bbb = 1, ddd = 10, sss =   "Item a" });
  fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[1], bbb = 2, ddd = 9, sss = "Item b" });
  fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[2], bbb = 3, ddd = 11, sss = "Item c" });
  fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[3], bbb = 1, ddd = 14, sss = "Item d" });
  fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[4], bbb = 4, ddd = 7, sss = "Item e" });
  fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[5], bbb = 5, ddd = 1, sss = "Item f" });
  fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[6], bbb = 6, ddd = 7, sss = "Item g" });
  fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[7], bbb = 3, ddd = 6, sss = "Item h" });
  fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[8], bbb = 3, ddd = 7, sss = "Item i" });
  fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[9], bbb = 4, ddd = 5, sss = "Item j" });


  this.Tarte2.ItemsSource = fff;

}

The way you are setting the ItemsSource on your Chart is strange.您在图表上设置 ItemsSource 的方式很奇怪。 Doing it this way should work:这样做应该有效:

At the Class sss defined as referred by {Binding Path=sss} (Basically the DataContext of DVC:PieSeries), declare this property:{Binding Path=sss}定义的 Class sss (基本上是 DVC:PieSeries 的 DataContext)中,声明此属性:

private ObservableCollection<Fruit02> mFff = new ObservableCollection<Fruit02>();
public ObservableCollection<Fruit02> fff
{
    get { return mFff; }
}

Then Bind your DVC:PieSeries ItemSource like so:然后像这样绑定您的 DVC:PieSeries ItemSource:

<DVC:PieSeries Title="Les datas en tarte" Name="Tarte2"
    ItemsSource="{Binding Path=fff}"
    IndependentValueBinding="{Binding Path=sss}"
    DependentValueBinding="{Binding Path=nnn}" >
</DVC:PieSeries>

Then in your click handler, don't create a new Collection, just modify the existing one:然后在您的点击处理程序中,不要创建新的 Collection,只需修改现有的:

    private void button3_Click(object sender, RoutedEventArgs e)
    {
        fff.Clear();
        fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[0], bbb = 1, ddd = 10, sss = "Item a" });
        fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[1], bbb = 2, ddd = 9, sss = "Item b" });
        fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[2], bbb = 3, ddd = 11, sss = "Item c" });
        fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[3], bbb = 1, ddd = 14, sss = "Item d" });
        fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[4], bbb = 4, ddd = 7, sss = "Item e" });
        fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[5], bbb = 5, ddd = 1, sss = "Item f" });
        fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[6], bbb = 6, ddd = 7, sss = "Item g" });
        fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[7], bbb = 3, ddd = 6, sss = "Item h" });
        fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[8], bbb = 3, ddd = 7, sss = "Item i" });
        fff.Add(new Fruit02 { nnn = this.data001.listeNombres03[9], bbb = 4, ddd = 5, sss = "Item j" });
    }

Assuming your DataContext is set up correctly and your Pie Chart Control is implemented properly, this should work.假设您的 DataContext 已正确设置并且您的饼图控件已正确实施,这应该可以工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM