我是一名新手程序员,而且我一直在做的事情更多的是业余爱好。因此,我正在整理一份申请,为我工作的公司生成发票。我有开发票的工作,从我们的供应商处获取数据,并匹配客户,产品和费率等,并生成发票。我现在正试图让它更好,并允许编辑客户和费率细节。部分原因是我有许多表保存查找值,例如增值税率,标记价值,自定义费率。
我正在用WPF,C#,。Net 4编写应用程序。我也试图保持MVVM模式以分离层。
我创建了一个名为EditLookupTableViewModel的通用VeiwModel,它处理与数据层和其他所有内容的对话。我的问题在于View。我想创建一个单一的视图,可以处理我在上面的类中允许的所有数据类型。我坚持的是这个。
我想将数据显示为数据库表中当前值的列表,并允许人们编辑这些值或添加新值。各种数据类型都基于通过实体框架4访问的SQL数据库中的表。这些表并不都具有相同数量或类型的列。
如果我使用DataGrid控件将数据显示为列表,如何根据显示的数据类型更改列类型?
我一直在各种网站上搜索,但没有发现任何适合的网站。
我以为我能够使用DataTemplate然后使用DataTemplateSelector,但我没有看到为DataGrid创建DataTemplate的任何方法。
然后我以为我会使用ContentPresenter,但我看不到你如何选择模板。
理想情况下,我想使用某种类型的模板选择器,因为我可以从代码控制模板,因为几个表具有相同的结构,因此将模板重用于那些相同的表是很好的。
我非常感谢任何帮助,因为我确信必须有一个比创建多个视图更优雅的解决方案。
由于
西蒙
答案 0 :(得分:0)
我会研究WCF RIA,虽然它需要对您与数据交互的方式进行一些更改。基本上,你有一个实体模型来处理CRUD操作所需的持久状态,以及一个漂亮的silverlight数据网格,你可以在其中一次编辑一个单元格。网上有样品,如果需要,我可以找到一个样品,花费不到30分钟即可开始运行样品。
答案 1 :(得分:0)
这answer可能会对您有所帮助。它可以添加和删除列类MVVM样式。
请注意,答案绑定到DataGridColumns的集合。我已将其修改为绑定到我的ColumnViewModel。这样我觉得我的解决方案更多是MVVM,因为它不需要在我的ViewModel代码中使用控件名称。
您可以根据该答案执行类似操作,并可能创建ColumnViewModel的不同子类以绑定并在扩展中使用GetType以支持您在问题中提到的需求。