我是一个新手程序员,我做它更多的是作为一种爱好,而不是职业。因此,我正在为我工作的公司申请开具发票。我有发票的东西工作,从我们的供应商的数据馈送,匹配客户,产品和价格等,并产生发票。我现在正在尝试美化它,并允许编辑客户和价格详细信息。这在一定程度上意味着我有许多保存查找值的表,例如增值税税率、标记值、自定义税率。
我正在用WPF、C#、mvvm4编写应用程序。我还在尝试使用.Net模式来分离各层。
我已经创建了一个名为EditLookupTableViewModel的通用VeiwModel,它处理与数据层的对话以及其他所有事情。我的问题是视图。我想创建一个单独的视图,它可以处理我在上面的类上允许的所有数据类型。我被卡住的地方是这样的。
我希望将数据表示为数据库表中的当前值的列表,并允许人们编辑这些值或添加新值。各种数据类型都基于通过Entity Framework4访问的SQL数据库中的表。这些表并不都具有相同数量或类型的列。
如果我使用DataGrid控件将数据表示为列表,如何根据所显示的数据类型更改列类型?
我已经在不同的网站上搜索过了,但没有找到任何合适的。
我以为我可以先使用DataTemplate,然后再使用DataTemplateSelector,但我没有看到为DataGrid创建DataTemplate的任何方法。
然后我想我应该使用ContentPresenter,但是我看不出您将如何选择模板。
理想情况下,我希望使用某种类型的TemplateSelector,因为我可以从代码中控制模板,因为几个表具有相同的结构,所以对于那些相同的表重用模板将是很棒的。
任何帮助都是非常感谢的,因为我相信一定有比创建多个视图更优雅的解决方案。
谢谢
西蒙
发布于 2010-09-07 21:59:09
此answer可能会对您有所帮助。它支持MVVM风格的列的添加和删除。
注意,answer绑定到一个DataGridColumns.I集合。我已经修改了它以绑定到我的ColumnViewModel.This,我觉得我的解决方案更像是MVVM,因为它不需要在我的ViewModel代码中使用控件命名空间。
您可以根据该答案执行类似的操作,并可能创建ColumnViewModel的不同子类以绑定到扩展中并在扩展中使用GetType,以支持问题中提到的需求。
https://stackoverflow.com/questions/3476573
复制相似问题