【问题标题】:How to do editable data grid in wpf using mvvm?如何使用 mvvm 在 wpf 中进行可编辑的数据网格?
【发布时间】:2013-11-08 02:18:12
【问题描述】:

我想使用可编辑的数据网格来添加、编辑数据。 wpf可以吗?谁能举个例子?

【问题讨论】:

标签: wpf mvvm datagrid


【解决方案1】:

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

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

以下是一些不错的链接,其中包含您可以查看的详细示例:

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然后就可以正常编辑了
  • 我通过 .mdbx 数据库表中的代码填充 dataGrid 并将“CanUserAddRows”设置为 true 使得添加记录成为可能。谢谢
【解决方案2】:

有一个如下的 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

【讨论】:

  • 更新绑定的视图模型属性只是很小的一部分。编辑所需的一小部分。例如。持久化数据的命令呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 2011-08-13
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多