2010-08-13 55 views
0

我是一个新手程序员,我一直把它作为一种爱好,然后是一种职业。因此,我正在为我的公司开发发票的应用程序。我有发票的工作,从我们的供应商接收数据馈送,并匹配客户,产品和费率等,并生成发票。我现在正试图让它变得漂亮起来,并允许客户和费率细节进行编辑。其中的一部分意味着我有许多可以保存查找值的表格,例如增值税率,标记价值,自定义费率。.NET4 WPF Datagrid - 响应不同的数据类型

我在WPF,C#,.Net 4中编写应用程序。我也试图保留MVVM模式来分离图层。

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

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

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

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

我想我可以使用DataTemplate,然后使用DataTemplateSelector,但我没有看到为DataGrid创建DataTemplate的任何方式。

然后我想我会使用一个ContentPresenter,但我不明白你会如何选择模板。

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

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

感谢

西蒙

回答

0

我会去了解一下WCF RIA虽然这将需要一些改变你如何与数据进行交互。基本上,你有一个实体模型来处理你需要的CRUD操作的持久状态,以及一个漂亮的silverlight数据网格,你可以一次编辑一个单元格。网上有样本,如果您需要花费不到30分钟的时间来完成样本并且运行,我可以找到一个样本。

+0

感谢您的快速响应。这可能是一个解决方案,但我不想在这一点上使用WCF。另外我不想使用Silverlight。该平台是WPF,并且会因为本文范围之外的原因而停留。 我想为DataGrid根据传递给它的对象的类型来更改它的列的数量和类型,但我不想让它自动生成这些列,因为我不一定想要一直显示所有列。 – SBuckner 2010-08-13 13:20:31

0

answer可能会帮助你。它可以添加和删除MVVM类型的列。

请注意,答案绑定到DataGridColumns的集合。我已修改它以绑定到我的ColumnViewModel。这种方式让我觉得我的解决方案更多的是MVVM,因为它不需要在我的ViewModel代码中使用控件namepsace。

你可以根据这个答案做类似的事情,并且可能创建ColumnViewModel的不同子类,以在扩展中绑定和使用GetType以支持问题中提到的需求。