0

我是一个新手程序员,我一直把它作为一种爱好而不是一种职业。因此,我正在为我工​​作的公司编写一个生成发票的应用程序。我有发票工作,它从我们的供应商那里获取数据,匹配客户、产品和费率等,并生成发票。我现在正在尝试美化它并允许编辑客户和费率详细信息。部分原因是我有许多表保存查找值,例如增值税率、加价值、自定义费率。

我正在用 WPF、C#、.Net 4 编写应用程序。我也在尝试使用 MVVM 模式来分离图层。

我创建了一个名为 EditLookupTableViewModel 的通用 VeiwModel,它处理与数据层和所有其他部分的对话。我的问题是视图。我想创建一个可以处理我在上述类中允许的所有数据类型的单一视图。我坚持的一点是这个。

我想将数据显示为数据库表中当前值的列表,并允许人们编辑这些值或添加新值。各种数据类型都基于通过 Entity Framework 4 访问的 SQL 数据库中的表。这些表并不都具有相同数量或类型的列。

如果我使用 DataGrid 控件将数据显示为列表,如何根据显示的数据类型更改列类型?

我一直在各种网站上搜索,但没有找到适合的任何东西。

我以为我可以使用 DataTemplate,然后使用 DataTemplateSelector,但我看不到为 DataGrid 创建 DataTemplate 的任何方法。

然后我想我会使用 ContentPresenter 但我看不到你会如何选择模板。

理想情况下,我想使用某种 og TemplateSelector,因为我可以从代码中控制模板,因为几个表具有相同的结构,因此为那些相同的表重用模板会很棒。

任何帮助将不胜感激,因为我确信必须有一个比创建多个视图更优雅的解决方案。

谢谢

西蒙

4

2 回答 2

0

我会研究 WCF RIA,尽管它需要对您与数据交互的方式进行一些更改。基本上,您有一个实体模型来处理 CRUD 操作所需的持久状态,以及一个漂亮的 silverlight 数据网格,您可以在其中一次编辑一个单元格。网上有样本,如果您需要不到 30 分钟的时间来启动和运行样本,我可以找到一个。

于 2010-08-13T12:09:31.023 回答
0

这个答案可能会对你有所帮助。它支持添加和删除 MVVM 样式的列。

请注意,答案绑定到 DataGridColumns 的集合。我已将其修改为绑定到我的 ColumnViewModel。这样我觉得我的解决方案更像是 MVVM,因为它不需要在我的 ViewModel 代码中使用控件名称空间。

您可以根据该答案执行类似操作,并可能创建 ColumnViewModel 的不同子类以绑定到并在扩展中使用 GetType 以支持您在问题中指出的需求。

于 2010-09-07T13:59:08.930 回答