绑定数据网格
本文关键字:网格 数据网 数据 绑定 | 更新日期: 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();