如何使用mvvm在wpf中进行可编辑的数据网格?

SNS*_*SNS 13 wpf datagrid mvvm

我想使用可编辑的数据网格来添加,编辑数据.用wpf可以吗?有人可以举个例子吗?

Omr*_*ian 20

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/

祝好运

  • 我刚刚发现如果你的`ItemSource`绑定到`IEnumerable`会导致数据无法编辑,我将`IEnumerable`更改为`List`然后它可以正常编辑 (2认同)

小智 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>
Run Code Online (Sandbox Code Playgroud)

在 ViewModel 中非常简单,如下所示

class ViewModel
{
    public ObservableCollection<Example> Values
    {
        get;
        set;
    }
}
public class Example
{
    public string A
    {
        get;
        set;
    }
    public string B
    {
        get;
        set;
    }
}
Run Code Online (Sandbox Code Playgroud)

在视图中,您总是可以看到一个空行,您只需单击并键入一些内容,然后按 Enter 键,它就会更新到 ViewModel

  • 更新绑定的视图模型属性只是一小部分。编辑所需的一小部分。例如,保存数据的命令怎么样? (2认同)