绑定数据网格

本文关键字:网格 数据网 数据 绑定 | 更新日期: 2023-09-27 18:10:25

我用实体框架和WPF创建了一个代码优先的c#项目。我已经创建了一个名为personelentity的实体。我拖拽那个实体到主窗口但它没有显示任何数据。我想我必须在mainwindow。xaml。cs文件中做点什么,但我不知道该怎么做。以下是xaml中的DataGrid代码:

<DataGrid x:Name="personelEntityDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Margin="19,259,18,10" RowDetailsVisibilityMode="VisibleWhenSelected">
    <DataGrid.Columns>
        <DataGridTextColumn x:Name="addressColumn" Binding="{Binding Address}" Header="Address" Width="SizeToHeader"/>
        <DataGridTextColumn x:Name="ageColumn" Binding="{Binding Age}" Header="Age" Width="SizeToHeader"/>
        <DataGridTextColumn x:Name="idColumn" Binding="{Binding Id}" Header="Id" Width="SizeToHeader"/>
        <DataGridTextColumn x:Name="nameColumn" Binding="{Binding Name}" Header="Name" Width="SizeToHeader"/>
        <DataGridTextColumn x:Name="phoneNumberColumn" Binding="{Binding PhoneNumber}" Header="Phone Number" Width="SizeToHeader"/>
    </DataGrid.Columns>
</DataGrid>

下面是MainWindow.xaml.cs文件中的代码:

public partial class MainWindow : Window
{
    private PersonelContext _context = new PersonelContext();
    public MainWindow()
    {
        InitializeComponent();
    }
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        System.Windows.Data.CollectionViewSource personelEntityViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("personelEntityViewSource")));    
    }
}

以下是PersonelContext.cs文件中的代码:

namespace Personel
{
    public class PersonelContext : DbContext
    {
        public DbSet<PersonelEntity> Personels { get; set; }
    }
}

代码中没有关于datagrid的其他内容。我知道我需要添加一些东西,但我不知道该添加什么。你能告诉我该怎么做吗?

绑定数据网格

在Xaml中做如下修改

ItemSource= {Binding}
to 
ItemSource= {Binding Path=.}

后面的代码
personelEntityDataGrid.ItemSource =_context.Personels.ToList();

(如果以上不工作尝试或部分)。

personelEntityDataGrid.DataContext =_context.Personels.ToList();

基本上每个绑定都建立在特定FrameworkElement的DataContext上。在你的例子中是DataGrid。数据没有更新,因为您没有初始化UseControl的数据上下文。
请不要将其与实体框架DbContext混淆,后者与控件DataContext无关。

因此,为了使您的屏幕工作,只需在Window_Loaded方法中添加以下行:

this.DataContext = _context.Personels.ToList();