如何使用 Extended WPF Toolkit 创建一个简单的饼图
How to create a simple Pie chart using Extended WPF Toolkit
我对 C# 开发还很陌生。
我正在尝试使用 Visual Studio、C# 和扩展 WPF 工具包创建一个简单的饼图。下面的代码是我正在尝试构建的 dll 的一部分(插入 Revit)。
我使用 NuGet 安装了扩展 WPF 工具包。
我找不到任何教程或示例,所以我尝试从我在不同的在线资源上找到的一些片段中放置代码。
目前,我有
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
<Grid Grid.Row="1">
<xctk:Pie x:Name="foobar"
DataContext="{Binding PieCollection, UpdateSourceTrigger=PropertyChanged}" >
</xctk:Pie>
</Grid>
和
public class PiePoint
{
public string Name { get; set; }
public Int16 Share { get; set; }
}
public class CompareToMultiLODViewModel : INotifyPropertyChanged
{
private ObservableCollection<PiePoint> _pieCollection;
public ObservableCollection<PiePoint> PieCollection
{
get { return _pieCollection; }
set { _pieCollection = value; OnPropertyChanged("PieCollection"); }
}
public CompareToMultiLODViewModel()
{
CompareToMultiLODBtnCommand = new MRCommand(this);
PieCollection = new ObservableCollection<PiePoint>();
PieCollection.Add(new PiePoint { Name = "Mango", Share = 10 });
PieCollection.Add(new PiePoint { Name = "Banana", Share = 36 });
}
private PropertyChangedEventHandler _PropertyChanged;
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add
{
//((INotifyPropertyChanged)PieCollection).PropertyChanged += value;
_PropertyChanged += value;
}
remove
{
//((INotifyPropertyChanged)PieCollection).PropertyChanged -= value;
_PropertyChanged -= value;
}
}
private void OnPropertyChanged(string PropertyName)
{
_PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName));
}
xaml后面的代码是
public partial class CompareToMultiLOD : Page
{
public CompareToMultiLOD()
{
InitializeComponent();
DataContext = new CompareToMultiLODViewModel();
}
我不知道它是否相关,但在调试时我看到在创建 PieCollection 之前分配了 DataContext,然后在 PieCollection 初始化时触发了一次 OnPropertyChanged。 PropertyChanged 似乎被触发了一次(我不明白,因为我添加了两个值)。
我不确定 ViewModel 是存储饼图使用的数据的正确位置,但我暂时将它放在那里(因为它是一个模拟 class,显然)。
目前我只想让它工作。
感谢您的帮助!
Pie
并不是真正的数据系列图表,而是代表椭圆的单个部分的形状:https://github.com/xceedsoftware/wpftoolkit/wiki/PieChart.
如果您想要饼图,您应该查看 this NuGet package and this 答案以获取有关如何使用它创建饼图的示例。
这应该给你一个饼图:
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
...
<Grid Grid.Row="1">
<chartingToolkit:Chart Margin="0" Title="Chart Title" DataContext="{Binding PieCollection}">
<chartingToolkit:PieSeries ItemsSource="{Binding}"
DependentValuePath="Share"
IndependentValuePath="Name">
</chartingToolkit:PieSeries>
</chartingToolkit:Chart>
</Grid>
我对 C# 开发还很陌生。 我正在尝试使用 Visual Studio、C# 和扩展 WPF 工具包创建一个简单的饼图。下面的代码是我正在尝试构建的 dll 的一部分(插入 Revit)。 我使用 NuGet 安装了扩展 WPF 工具包。 我找不到任何教程或示例,所以我尝试从我在不同的在线资源上找到的一些片段中放置代码。 目前,我有
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
<Grid Grid.Row="1">
<xctk:Pie x:Name="foobar"
DataContext="{Binding PieCollection, UpdateSourceTrigger=PropertyChanged}" >
</xctk:Pie>
</Grid>
和
public class PiePoint
{
public string Name { get; set; }
public Int16 Share { get; set; }
}
public class CompareToMultiLODViewModel : INotifyPropertyChanged
{
private ObservableCollection<PiePoint> _pieCollection;
public ObservableCollection<PiePoint> PieCollection
{
get { return _pieCollection; }
set { _pieCollection = value; OnPropertyChanged("PieCollection"); }
}
public CompareToMultiLODViewModel()
{
CompareToMultiLODBtnCommand = new MRCommand(this);
PieCollection = new ObservableCollection<PiePoint>();
PieCollection.Add(new PiePoint { Name = "Mango", Share = 10 });
PieCollection.Add(new PiePoint { Name = "Banana", Share = 36 });
}
private PropertyChangedEventHandler _PropertyChanged;
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add
{
//((INotifyPropertyChanged)PieCollection).PropertyChanged += value;
_PropertyChanged += value;
}
remove
{
//((INotifyPropertyChanged)PieCollection).PropertyChanged -= value;
_PropertyChanged -= value;
}
}
private void OnPropertyChanged(string PropertyName)
{
_PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName));
}
xaml后面的代码是
public partial class CompareToMultiLOD : Page
{
public CompareToMultiLOD()
{
InitializeComponent();
DataContext = new CompareToMultiLODViewModel();
}
我不知道它是否相关,但在调试时我看到在创建 PieCollection 之前分配了 DataContext,然后在 PieCollection 初始化时触发了一次 OnPropertyChanged。 PropertyChanged 似乎被触发了一次(我不明白,因为我添加了两个值)。
我不确定 ViewModel 是存储饼图使用的数据的正确位置,但我暂时将它放在那里(因为它是一个模拟 class,显然)。
目前我只想让它工作。 感谢您的帮助!
Pie
并不是真正的数据系列图表,而是代表椭圆的单个部分的形状:https://github.com/xceedsoftware/wpftoolkit/wiki/PieChart.
如果您想要饼图,您应该查看 this NuGet package and this 答案以获取有关如何使用它创建饼图的示例。
这应该给你一个饼图:
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
...
<Grid Grid.Row="1">
<chartingToolkit:Chart Margin="0" Title="Chart Title" DataContext="{Binding PieCollection}">
<chartingToolkit:PieSeries ItemsSource="{Binding}"
DependentValuePath="Share"
IndependentValuePath="Name">
</chartingToolkit:PieSeries>
</chartingToolkit:Chart>
</Grid>