我使用Entity Framework和WPF创建了一个代码优先的C#项目。我创建了一个名为Personel Entity的实体。我将该Entity拖放到MainWindow但它没有显示任何数据。我想我必须在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的其他内容。我知道我需要添加一些东西,但我不知道要添加什么。你能告诉我该怎么做吗?
答案 0 :(得分:1)
基本上每个绑定都建立在特定DataContext
的FrameworkElement上。在您的情况下,它是DataGrid
。由于您尚未初始化UseControl
的数据上下文,因此未更新数据。
请不要将其与实体框架DbContext
混淆,后者与控件DataContext
无关。
因此,要使屏幕正常工作,只需在Window_Loaded
方法中添加以下行:
this.DataContext = _context.Personels.ToList();
答案 1 :(得分:1)
在Xaml中进行一次更改,如下所示
ItemSource= {Binding}
to
ItemSource= {Binding Path=.}
和代码背后的
personelEntityDataGrid.ItemSource =_context.Personels.ToList();
(如果以上不起作用,请尝试OR部分)。
或
personelEntityDataGrid.DataContext =_context.Personels.ToList();