如何使用MVVM在WPF中创建可编辑的数据网格?

16

我想使用可编辑的数据表格来添加、编辑数据。在WPF中是否可能实现?有人可以给一个例子吗?


为什么不呢?datagrid就是专门为此目的而设计的。以下是一个很好的链接,可以帮助你入门:http://wpftutorial.net/DataGrid.html - TtT23
http://brentedwards.net/2012/03/11/wpf-datagridrow-double-click-with-mvvm/ - Jignesh.Raj
2个回答

21

DataGrid控件具有内置的所有功能。您可以将属性CanUserAddRows设置为true,以允许用户添加行。

DataGrid默认是可编辑的,其中每个列都有一个编辑控件,用于编辑其值。默认情况下,DataGrid自动为模型中的每个属性生成列,因此您甚至不必定义它的列。

以下是一些具有详细示例的良好链接:

http://wpftutorial.net/DataGrid.html

http://www.codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples

http://www.c-sharpcorner.com/UploadFile/mahesh/datagrid-in-wpf/

祝你好运


2
我刚刚发现,如果你将 ItemSource 绑定到一个 IEnumerable 上,那么数据将无法被编辑。我将 IEnumerable 改为 List 后,数据就可以正常编辑了。 - yu yang Jian
我通过代码从一个.mdbx数据库表填充数据网格,并将"CanUserAddRows"设置为true,这使添加记录成为可能。谢谢 - MindRoasterMir

3

以下是一个Xaml示例:

<Window x:Class="DatGrid.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"
    xmlns:local="clr-namespace:DatGrid">
<Window.DataContext>
    <local:ViewModel/>
</Window.DataContext>
<StackPanel/>
    <DataGrid ItemsSource="{Binding Path=Values}"></DataGrid>
</StackPanel>
</Window>

在ViewModel中,有一些非常简单的内容,就像下面这样。
class ViewModel
{
    public ObservableCollection<Example> Values
    {
        get;
        set;
    }
}
public class Example
{
    public string A
    {
        get;
        set;
    }
    public string B
    {
        get;
        set;
    }
}

在视图中,您可以始终看到一个空行,只需单击并输入内容,然后按Enter键即可更新到ViewModel中。

2
更新绑定的视图模型属性只是编辑所需的一小部分。例如,持久化数据的命令怎么办? - ProfK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接