我是WPF的新手,我想知道如何创建一个包含可扩展数量的项目组的视图。在项目组中,我想放置一个Label和一个RadComboBox。我想有一个按钮(+),点击其中一个新的项目组出现在列表中。
假设我们从一个空视图和一个(+)按钮开始。通过单击(+),将出现带有组合框的标签。然后再次单击(+),将显示另一个带有组合框的标签。我希望这份名单能适合我想要的多组。标签和组合框的内容将由父列表的DataContext确定。
稍后我还想添加一个(-)按钮,它将删除选定的组,但我认为一旦我知道要使用哪些元素,我就可以自己解决这个问题。
有人知道我该怎么做吗?哪个元素可以容纳这些水平堆叠的组,我如何在一个“组”中放置标签和组合框?我主要关心的是XAML代码和(+)按钮背后的逻辑。
1条答案
按热度按时间xnifntxz1#
您可以使用ItemsControl来完成此操作。您可以将ItemsSource绑定到视图模型中的ObservableCollection。
下面是一个简单的示例(受this tutorial启发),演示了如何构建模板来显示每个组:
ItemsPanel定义了控制组布局的面板。这里我使用了一个StackPanel,方向设置为水平。ItemTemplate设置用于显示每个组的DataTemplate。这里我使用了一个标签和一个组合框。ItemTemplate中的DataContext将是您设置为ItemsSource的ObservableCollection中的一个项。
至于(+)按钮,你可以使用一个Button来添加一个元素到你的ObservableCollection中。您应该在ViewModel上为此创建一个Command,并将Button的Command属性绑定到它。