如何加载与使用WPF和MVVM数据库中的数据一个DataGrid?(How do I load a

2019-09-18 09:41发布

我是一个完整的新手到WPF和MVVM,所以我提前道歉,如果这个查询是相当简单的。 我在网上搜索和还没有能够找到任何这符合我的要求。 Hense为什么我在这里!

目前我正在试图实现从使用LINQ数据库查询的数据表。 这是我运行查询:

DataContext connection = new DataContext();

    var getTripInformation = from m in connection.tblTrips
                where m.TripDate > DateTime.Today
                select new { m.TripID, m.TripName, m.TripDate, m.ClosingDate, m.PricePerAdult, m.PricePerChild, m.Status };

填补我与我预期的相关信息变种。

现在,我希望能够做的是使用一个DataGrid在我看来这diplay。 任何人都可以帮助我呢?

Answer 1:

简而言之,你将有你的视图和视图模型。 该视图模型将需要实现INotifyPropertyChanged接口,方便视图结合。 这只是提供当您更改您的视图模型的属性时引发的事件。 然后,您的视图将绑定到视图模型的属性。 这工作只要视图的DataContext设置为视图模型实例。 下面,这是在后台代码完成,但很多纯粹主义者这直接在XAML做。 一旦这些关系被定义,运行LINQ查询来填充的ObservableCollection(也实现INotifyPropertyChanged为当添加的项目/内部删除),网格将显示数据。

视图模型

public class MyViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private ObservableCollection<MyRecord> _records = null;
    public ObservableCollection<MyRecord> Records 
    {
        get { return _records; }
        set
        {
            if( _records != value )
            {
                _records = value;

                if( this.PropertyChanged != null )
                {
                    this.PropertyChanged( this, new PropertyChangedEventArgs( "Records" ) );
                }
             }
         }
    }

    public MyViewModel()
    {
        this.Records = new ObservableCollection<MyRecord>();
        this.LoadData();
    }

    private void LoadData()
    {
        // this populates Records using your LINQ query
    }

查看(代码隐藏)

public class MyView : UserControl
{
    public MyView()
    {
        InitializeControl();

        // setup datacontext - this can be done directly in XAML as well
        this.DataContext = new MyViewModel();
    }
}

视图(XAML)

<DataGrid
    ItemsSource="{Binding Path=Records, Mode=OneWay}"
    ...
/>

如果设置AutoGenerateColumns = 'True'在你的DataGrid,它将为绑定物品类型的每个公共属性一行。 如果将该值设置为false,则需要明确列出列,什么财产,他们将映射到。



Answer 2:

如果您正在开发使用MVVM那么你需要做 - 应用

  1. ViewModel类 - 这将有UI逻辑和将实现INotifyPropertyChanged接口。 您需要创建类型的集合,这将得到与DataGrid中绑定的属性。 并在此媒体资源相关联的制定者,你需要调用PropertyChangedEventHandler。

  2. 您需要查看的DataContext的设置为on XAML,代码隐藏,视图模型或一些中介类的视图模型。



文章来源: How do I load a DataGrid with data from a database using WPF and MVVM?