wpf - 无法让我的图表出现在 Charts.WPF 中
问题描述
我一直试图让一个基本图表出现在我的 WPF 应用程序中。不幸的是,我选择进入这个兔子洞的图书馆碰巧只有很少的文档。我只能找到这个 GitHub 存储库:
https://github.com/mendonca-andre/Charts.WPF
这是 nuget 包: https ://www.nuget.org/packages/Charts.WPF
任何时候我谷歌 Charts.WPF 谷歌只是认为我正在寻找任何可以制作图表的 wpf 库。话虽如此,我想我几乎可以正常工作,但我不知道如何将数据绑定到它可以解释的图表。我查看了示例,发现他们使用的是 ObservableLists,所以我尝试了,但没有奏效。
这是我的 XAML:
<Window x:Class="Eartquake_Tracker.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:chart="clr-namespace:Charts.WPF.ChartControls;assembly=Charts.WPF"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Eartquake_Tracker"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.Resources>
<local:BuildGraph x:Key="functions"/>
</Grid.Resources>
<Grid.DataContext>
<Binding Source="{StaticResource functions}"/>
</Grid.DataContext>
<chart:ChartSeries SeriesTitle ="La Palma Quakes" Width="300" Height="300" ItemSource="{Binding Path=chartData}"/>
</Grid>
这是我试图将其绑定到的类。我现在使用的数据只是我想要出现的线性数据:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Eartquake_Tracker
{
class BuildGraph : System.Windows.Data.DataSourceProvider
{
public Dictionary<int, int> chart = new Dictionary<int, int>();
public ObservableCollection<Dictionary<int, int>> chartData = new ObservableCollection<Dictionary<int, int>>();
public BuildGraph()
{
//this.chartData = chartData;
chart.Add(0, 0);
chart.Add(1, 1);
chart.Add(2, 2);
chart.Add(3, 3);
chart.Add(4, 4);
chart.Add(5, 5);
chartData.Add(chart);
}
}
}
如果有人熟悉这个库,任何帮助将不胜感激,也许熟悉制作图表的一般情况在这里会有所帮助。我对 WPF 和绑定和图表不是很熟悉。谢谢您的帮助!
解决方案
通过查看 git repo 中的示例,我设法让它工作。如果我是你,我会下载 repo 并玩一玩。有一个 generic.xaml 文件显示如何创建每种不同类型的图表。
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:charts="clr-namespace:Charts.WPF.ChartControls;assembly=Charts.WPF"
xmlns:pieChart="clr-namespace:Charts.WPF.Core.PieChart;assembly=Charts.WPF"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<pieChart:PieChart ChartTitle="Test" ChartSubTitle="Test" ChartLegendVisibility="Visible">
<pieChart:PieChart.Series>
<charts:ChartSeries
SeriesTitle="Test"
DisplayMember="Text"
ValueMember="Value"
ItemsSource="{Binding Path=chart}">
</charts:ChartSeries>
</pieChart:PieChart.Series>
</pieChart:PieChart>
</Grid>
</Window>
如果你使用你的Window
as 会更容易DataContext
public partial class MainWindow : Window
{
public Dictionary<int, int> chart { get; set; } = new Dictionary<int, int>();
public MainWindow()
{
chart.Add(1, 1);
chart.Add(2, 2);
chart.Add(3, 3);
InitializeComponent();
}
}
请注意,只有在调用InitializeComponent
. 这是因为Dictionary
不可观察,即添加或删除项目时不会通知您的视图。
希望这足以让您研究其他类型的图表。
推荐阅读
- android - 使 Checkbox 看起来像 CheckboxPreference
- php - 错误安装:XAMPP htdocs MacOS High Sierra
- react-native - react-native 无法读取 null 的属性“绑定”
- turing-machines - 可以使用 2 个“相反”识别器构建决策器吗?
- antlr - 区分语法中的多个标记
- php - 如何使用 PHP 上传 zip/rar 或任何压缩文件
- javascript - 我的运营商出了什么问题?Javascript
- javascript - react-native - *.js 导入 *.ts 文件
- javascript - 在特定 url 上重定向 url
- javascript - 如何在网站中隐藏我的源文件以使用户无法访问