[英]Binding a DataGrid
我已經使用Entity Framework和WPF創建了代碼優先的C#項目。 我創建了一個名為Personel 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的內容。 我知道我需要添加一些東西,但是我不知道要添加什么。 你能告訴我該怎么辦嗎?
基本上,每個綁定都基於特定FrameworkElement的DataContext
構建。 您的情況是DataGrid
。 數據未更新,因為您尚未初始化UseControl
數據上下文。
請不要將其與與控件DataContext
無關的Entity Frameworks DbContext
混淆。
因此,要使屏幕正常工作,只需Window_Loaded
添加到Window_Loaded
方法中:
this.DataContext = _context.Personels.ToList();
在Xaml中進行如下更改
ItemSource= {Binding}
to
ItemSource= {Binding Path=.}
並在后面的代碼中
personelEntityDataGrid.ItemSource =_context.Personels.ToList();
(如果以上方法無效,請嘗試“或”部分)。
要么
personelEntityDataGrid.DataContext =_context.Personels.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.