Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF动态创建一组控件WPF_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C# WPF动态创建一组控件WPF

C# WPF动态创建一组控件WPF,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,假设我有一个类,如下所示: Public MyChart { private string ChartName{get; set;} private List<MyChartSeries> ChartSeries{get; set;} } 然后在我的ViewModel下有一个公共列表 我要做的是,我使用图表名称创建一个新的文本块,它将包含这个字符串值,类似于一个标题,然后在它下面我将创建一个新的图表,它将从ChartSeries中填充,这将更加复杂,但出于解释目的,它已经足

假设我有一个类,如下所示:

Public MyChart
{
  private string ChartName{get; set;}
  private List<MyChartSeries> ChartSeries{get; set;}
}
然后在我的ViewModel下有一个公共列表

我要做的是,我使用图表名称创建一个新的文本块,它将包含这个字符串值,类似于一个标题,然后在它下面我将创建一个新的图表,它将从ChartSeries中填充,这将更加复杂,但出于解释目的,它已经足够好了

图表的数量可能因输入文件而异。我可以通过代码创建此“控件组”;然而,我相信应该有一些方法可以通过MVVM模式动态地完成这项工作,这样我就不必手动循环我的图表集合并自己完成所有事情


我想问一个如何开始的方向,因为我从来没有这样做过…所以我甚至不知道从哪里开始。我知道我很可能必须创建一个UserControl,但这几乎就是全部。

使用ItemsControl控件。在您的情况下,itemscontrol内部的itemscontrol最顶部的ItemsSource databoumd将指向“Charts”,而内部的itemscontrol将指向“ChartSeries”


在mvvm中,您只需创建ItemTemplate并指定ItemsSource,而不用在xaml中创建项。然后Wpf将为您创建项目。如果使用ObservableCollection而不是List,则可以动态添加和删除图表和图表系列以及项目控件将自动在ui中创建和删除项目。

从这里开始阅读:。因此,您建议我调整ListBox数据模板以显示图表而不是文本?@RobertJ。所以你必须画图表?为什么不使用第三方库来实现这一点?然后你可以把你的数据绑定到它上面。是的,我确实使用了一个图表库。我会试着,谢谢你,你有没有任何可能帮助我理解这一点的链接?我不太确定我是否完全理解这个概念