如何在WPF中使用等效于WinForms DataGridView的控件

时间:2013-11-01 14:02:55

标签: wpf vb.net winforms datagridview datagrid

我一直在使用WPF创建一个检查表单,我需要一个用户可以键入未知数量的注释的地方(因此我不使用文本框)。在我的WinForms版本的这个应用程序中,我使用了DataGridView,我可以输入尽可能多的信息。我希望在WPF中使用DataGrid或等效控件。

WinForms示例

Inspection Form (WinForms)


我需要能够在WPF中执行相同的操作,但我似乎无法在DataGrid中添加任何行。最重要的是,当我尝试检查CanUserAddRows时,它立即取消了它。

Cannot add rows


所以我检查了Vincent Sigal's blog post这个问题。他提到了一些有趣的事情:

  

...但要注意CanUserAddRows和CanUserDeleteRows,因为它们看起来有点神奇。它们的值基于其他属性(例如DataGrid.IsReadOnly,DataGrid.IsEnabled,IEditableCollectionView.CanAddNew和IEditableCollectionView.CanRemove)进行强制转换。所以这是编辑时要注意的另一件事。如果遇到将CanUserAddRows或CanUserDeleteRows设置为true但自动更改为false的情况,请检查是否满足以下条件。

我验证了这一点,我的DataGrid 不是只读而且已启用。虽然,我不知道在哪里可以找到IEditableCollectionView.CanAddNewIEditableCollectionView.CanRemove ...

我不认为我的情况应该要求DataGrid上的绑定事件,因为用户应该将他的注释直接输入到DataGrid中......我正在尝试做什么甚至可能?也许我应该使用不同的控件?

1 个答案:

答案 0 :(得分:0)

我必须承认我在第一段之后停止阅读你的问题,所以请原谅我,如果我理解你错了......但是如果你只想在TextBox中输入多行文字WPF,您可以通过在其上设置几个属性来实现:

<TextBox TextWrapping="Wrap" AcceptsReturn="True" />

对于DataGrid,您可以在DataGridTextColumn.ElementStyle和/或DataGridTextColumn.EditingElementStyle中设置这些属性,因为WPF DataGridTextColumn multi-line input帖子显示效果非常好。

如果我 误解了你,请告诉我。


更新&gt;&gt;&gt;

好的,所以我回过头来阅读你的其余问题......在没有阅读问题的情况下回答可能是本网站的风险。这也是我做的,因为我看到你也想知道如何使用DataGrid

我必须首先说...深吸一口气...... WPF 非常与WinForms不同...... 非常不同。在WPF中,我们操纵数据而不是UI对象,因此添加新行实际上意味着向集合添加新项。您可以在MSDN上的DataGrid Class页面上找到完整的工作示例。

有关更多示例,请查看WPF Tutorial.NET上的WPF DataGrid Control页面。 WPF对于新来者有很多需要接受,并且可能非常令人困惑,但是当你进入它时,这是非常值得的。