C# WPF 动态创建控件组 WPF
C# WPF Dynamically Creat group of controls WPF
假设我有一个 class 如下所示:
Public MyChart
{
private string ChartName{get; set;}
private List<MyChartSeries> ChartSeries{get; set;}
}
然后在我的 ViewModel 下有一个 public List <MyChart> Charts
我要做的是使用 图表名称 创建一个新的 TextBlock,它将包含这个字符串值(类似于 header),然后在它下面我将创建一个新图表,它将从 ChartSeries 中填充(它会更复杂,但为了解释目的它已经足够了)。
图表数量可能因输入文件而异。我可以通过代码创建这个 'group of controls';但是我相信应该有一些方法可以通过 MVVM 模式动态地完成它(这样我就不必手动循环我的图表 collection 并自己做所有事情)。
我想问一下如何开始,因为我以前从未做过...所以我什至不知道从哪里开始。我知道我很可能必须创建一个 UserControl 但仅此而已。
使用ItemsControl控件。在您的情况下,ItemsControl 中的 itemscontrol 最上面的 ItemsSource databoumd 为“Charts”,内部为“ChartSeries”
在 mvvm 中而不是在 xaml 中创建项目,您只创建 ItemTemplate 并指定 ItemsSource。然后 Wpf 将为您创建项目。如果您使用 ObservableCollection 而不是 List,您可以动态添加和删除图表和图表系列,而 ItemsControl 将自动创建和删除 ui 中的项目。
假设我有一个 class 如下所示:
Public MyChart
{
private string ChartName{get; set;}
private List<MyChartSeries> ChartSeries{get; set;}
}
然后在我的 ViewModel 下有一个 public List <MyChart> Charts
我要做的是使用 图表名称 创建一个新的 TextBlock,它将包含这个字符串值(类似于 header),然后在它下面我将创建一个新图表,它将从 ChartSeries 中填充(它会更复杂,但为了解释目的它已经足够了)。
图表数量可能因输入文件而异。我可以通过代码创建这个 'group of controls';但是我相信应该有一些方法可以通过 MVVM 模式动态地完成它(这样我就不必手动循环我的图表 collection 并自己做所有事情)。
我想问一下如何开始,因为我以前从未做过...所以我什至不知道从哪里开始。我知道我很可能必须创建一个 UserControl 但仅此而已。
使用ItemsControl控件。在您的情况下,ItemsControl 中的 itemscontrol 最上面的 ItemsSource databoumd 为“Charts”,内部为“ChartSeries”
在 mvvm 中而不是在 xaml 中创建项目,您只创建 ItemTemplate 并指定 ItemsSource。然后 Wpf 将为您创建项目。如果您使用 ObservableCollection 而不是 List,您可以动态添加和删除图表和图表系列,而 ItemsControl 将自动创建和删除 ui 中的项目。