2017-07-25 97 views
0

我是新来的WPF以前一直与WinForms合作,我仍然试图让我的脑袋周围的WPF心态,这给我的背景是嵌入式编码,似乎已被删除。以编程方式在WPF中添加/删除网格?

在我的项目中,我需要创建一个网格面板“模板”,我将其称为“弗雷德”(在这种情况下,弗雷德只是一个图形化自定义按钮的集群),并产生多个实例到用户界面以编程方式基于外部事件。我发现很难看到一个明显的方法来做到这一点(也许这是因为可能有多种方式?),并且已经研究了ControlTemplates,Styles和Custom Elements。我怀疑解决方案在于后者,但是我也担心我可能会以错误的方式考虑这个问题。对我来说,将Fred看作是一个网格资源似乎很有意义,我可以以编程方式调用,当我需要创建一个新的实例时,但由于我发现很难“谷歌”这件事情,那么也许我会讨论这一切错误?

如果这有点含糊,我很抱歉。

这里我的问题是双重的:

  1. 这是一个明智的方法就是实现我的最终目标,如果我需要以编程方式产卵定制按钮的这一组(弗雷德),那么是否有意义遏制这些在一个可以被主C#访问的网格中,还是存在一个更缺乏标准的方法来实现这一点?

  2. 取决于(1)的答案是否有代码示例来实现此目的?

回答

0

你正在寻找的概念是一种“ItemsControl的”(其本身是一个可用的类,并且也有几个派生类等ListViewListBox)与DataTemplate小号组合。

在这种情况下,你会做“弗雷德”一DataTemplate(通常为您ItemControl小号ItemTemplate财产的XAML直系后裔)。然后,您将ItemsSource绑定到集合(对于运行时添加/删除应为ObservableCollection<T>)。

所有这一切都依赖于使用MVVM模式(它来自WinForms你可能不是)。我建议您查看MSDN,Stack Overflow,Reed Copsey的优秀博客系列:http://reedcopsey.com/series/windows-forms-to-mvvm/或者只是谷歌“WPF和MVVM”以了解更多信息。

要明确地回答你的问题:

  1. 是;你有正确的概念,但正在用WinForms的术语/实践思考它。改用MVVM。
  2. 是;有很多可用的资源。
+0

非常感谢。谢谢。 – user8233888

相关问题